C의 반환 유형 및 함수 서명
C에서 함수의 반환 유형은 일반 함수의 서명으로 간주되지 않습니다. , 함수 템플릿의 특수화가 아닌 함수를 의미합니다. 이는 동일한 이름과 매개변수 유형을 가진 함수는 반환 유형이 다르더라도 오버로드될 수 있음을 의미합니다.
함수 템플릿 전문화의 서명
그러나 함수의 경우 템플릿 전문화에서는 반환 유형이 서명에 포함됩니다. 이는 함수 템플릿 전문화의 서명에는 템플릿 자체의 서명은 물론 반환 유형 및 템플릿 매개변수 목록도 포함되기 때문입니다.
왜 함수 서명의 일부가 아닌가?
반환 유형이 일반 함수의 함수 시그니처로 간주되지 않는 이유는 C 표준에 명시적으로 명시되어 있지 않습니다. 하지만 이는 함수 오버로딩이 주로 함수의 식별자와 매개변수 유형을 기반으로 하기 때문이라고 추론할 수 있습니다.
오버로딩이 유효하지 않은 경우
에도 불구하고 반환 유형이 서명의 일부가 아닌 경우 표준에서는 다른 반환 유형을 사용하여 함수를 오버로드하는 것을 금지합니다. 이는 다음 코드가 현재 주요 컴파일러에서 컴파일 오류를 발생시킨다는 것을 의미합니다.
int f(); double f(); // invalid
결론
C에서 반환 유형은 일반 함수의 서명이지만 함수 템플릿 특수화의 서명에는 포함됩니다. 함수를 오버로드하고 함수 템플릿으로 작업할 때 이러한 차이점을 이해하는 것이 중요합니다.
위 내용은 반환 유형이 C 함수 서명의 일부인가요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!