C++과부하 해결


비고

과부하 해결은 여러 상황에서 발생합니다.

  • 명명 된 오버로드 된 함수를 호출합니다. 후보자는 이름 조회에서 찾은 모든 기능입니다.
  • 클래스 객체를 호출합니다. 후보자는 일반적으로 클래스의 모든 오버로드 된 함수 호출 연산자입니다.
  • 운영자의 사용. 후보는 네임 스페이스 범위에서 오버로드 된 연산자 함수, 왼쪽 클래스 개체에있는 오버로드 된 연산자 함수 (있는 경우) 및 기본 제공 연산자입니다.
  • 초기화를 위해 호출 할 올바른 변환 연산자 함수 또는 생성자를 찾기위한 오버로드 확인
    • 비표준 직접 초기화 ( Class c(value) )의 경우, 후보는 Class 생성자입니다.
    • 비 목록 복사 초기화 ( Class c = value ) 및 사용자 정의 변환 순서에서 호출 할 사용자 정의 변환 함수를 찾는 데 사용됩니다. 후보는 Class 의 생성자이며 소스가 클래스 객체 인 경우 해당 변환 연산자가 작동합니다.
    • 클래스 객체에서 비 클래스의 초기화 ( Nonclass c = classObject ). 후보는 이니셜 라이저 객체의 변환 연산자 함수입니다.
    • 클래스 오브젝트 (함께 참조 초기화 R &r = classObject 클래스에 직접 결합 될 수있는 값 수득 변환 연산자 기능을 갖는다), r . 후보는 그러한 변환 연산자 함수입니다.
    • 비 집합 클래스 객체 ( Class c{1, 2, 3} )의리스트 초기화의 경우, 후보는 과부하 해결을 통한 첫 번째 패스의 초기화리스트 생성자입니다. 이것이 실행 가능한 후보를 찾지 못하면, Class 의 생성자를 후보로 사용하여 두 번째 패스 오버로드 확인이 수행됩니다.

과부하 해결 관련 예