오버 로드 된 함수에 대 한 제한

몇 가지 제한을 수용 가능한 오버 로드 된 함수 집합을 관리합니다.

  • 두 개의 함수 오버 로드 된 함수 집합에서 다른 인수 목록을 사용 해야 합니다.

  • 함수 인수 목록에는 동일한 형식의 반환 형식에만 기반으로 오버 로드 하면 오류가 발생 합니다.

    Microsoft 전용

오버 로드할 수 있습니다 new 연산자 만을 기준으로 형식을 반환-특히, 지정 된 메모리 모델 한정자를 기반으로 합니다.

Microsoft 특정 끝

  • 멤버 함수는 단독으로 고정 되 고와 다른 nonstatic 기반으로 오버 로드할 수 없습니다.

  • typedef선언 새 형식은 정의 하지 않습니다. 기존 형식에 대 한 동의어 들을 소개합니다.오버 로드 하는 메커니즘에는 영향을 주지 않습니다.다음 코드에서는 이 오류가 발생하는 경우를 보여 줍니다.

    typedef char * PSTR;
    
    void Print( char *szToPrint );
    void Print( PSTR szToPrint );
    

    앞의 두 가지 기능이 동일한 인수 목록을 사용 합니다.PSTR형식에 대 한 동의어입니다 char *.멤버 범위에서이 코드는 오류가 발생합니다.

  • 열거 형식을 고유한 형식 이라고 하 고 사용 하 여 오버 로드 함수를 구별할 수 있습니다.

  • 배열"형식" 및 "포인터" 오버 로드 된 함수 사이의 구별의 목적을 위해 같다고 간주 됩니다.단일 치수 지정 된 배열에만 적용 됩니다.다음 따라서 함수 충돌 오버 로드 하 고 오류 메시지를 생성 합니다.

    void Print( char *szToPrint );
    void Print( char szToPrint[] );
    

    여러 번 치수가 지정 된 배열에 대 한 두 번째 및 이후의 모든 치수 형식 일부로 간주 됩니다.따라서 오버 로드 된 함수 사이의 구별에 사용 됩니다.

    void Print( char szToPrint[] );
    void Print( char szToPrint[][7] );
    void Print( char szToPrint[][9][42] );
    

참고 항목

참조

오버 로딩의 개요