가장 일치하는 항목이 결정되는 순서는 다음과 같습니다. 정밀 일치 표준 변환 사용자 정의 변환 기본 인수 수 최소
C++ 함수 오버로딩에서 가장 일치하는 항목은 어떻게 결정되나요?
C++에서 함수 오버로드를 사용하면 이름은 같지만 매개변수가 다른 여러 버전의 함수를 만들 수 있습니다. 컴파일러는 적절한 오버로드된 버전을 사용할 때 가장 일치하는 항목을 결정하기 위해 일련의 규칙을 따릅니다.
규칙:
-
정확한 일치: 이 규칙은 실제 참가자 유형과 공식 참가자 유형이 정확히 일치하는 경우에 적용됩니다.
-
표준 변환: 실제 참가자 번호가 암시적으로 공식 참가자 번호로 변환될 수 있는 경우 이 규칙이 적용됩니다.
-
사용자 정의 변환: 사용자 정의 변환 연산자가 있고 실제 참가자를 공식 참가자로 변환할 수 있는 경우 이 규칙이 적용됩니다.
-
기본 매개변수: 기본 매개변수가 있는 오버로드된 버전은 기본 매개변수가 없는 버전보다 우선순위가 낮습니다.
가장 일치하는 항목 결정 순서:
- 먼저 컴파일러는 정확도 일치를 시도합니다.
- 정밀도 일치가 없으면 컴파일러는 표준 변환을 사용하려고 시도합니다.
- 표준 변환이 없으면 컴파일러는 사용자 정의 변환을 사용하려고 시도합니다.
- 변환이 적용되지 않으면 컴파일러는 기본 매개변수가 가장 적은 버전을 선택합니다.
실용 예:
다음 코드를 고려하세요.
void foo(int x);
void foo(float x);
로그인 후 복사
foo(3.14)
时,编译器将使用 void foo(float x)
作为最佳匹配,因为浮点常量 3.14
可以隐式转换为 float
유형을 호출할 때.
추가 참고 사항:
- 동일한 일치 항목이 포함된 오버로드된 버전이 여러 개 있는 경우 컴파일러는 오류를 보고합니다.
- 컴파일러는 가장 일치하는 항목을 결정할 수 없는 경우에도 오류를 보고합니다.
- 모호함을 피하려면 함수 오버로드의 서명을 구별하는 것이 가장 좋습니다.
위 내용은 C++ 함수 오버로딩에서 가장 일치하는 항목은 어떻게 결정됩니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!