다음을 통해 공유


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

여러 제한은 사용할 수 있는 오버로드된 함수 집합을 관리합니다.

  • 오버로드된 함수 집합의 임의의 두 함수에는 서로 다른 인수 목록이 있어야 합니다.

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

    Microsoft 전용

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

Microsoft 전용 종료

  • 멤버 함수는 하나의 정적 및 다른 비정적을 기반으로 단독으로 오버로드할 수 없습니다.

  • typedef 선언은 새 형식을 정의하지 않으며 기존 형식에 대한 동의어를 소개합니다. 오버로드 메커니즘에는 영향을 주지 않습니다. 다음 코드를 살펴보십시오.

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

    위의 두 함수에는 동일한 인수 목록이 있습니다. PSTR은 char * 형식의 동의어입니다. 멤버 범위에서 이 코드를 사용하면 오류가 발생합니다.

  • 열거 형식은 고유한 형식이며 오버로드된 함수 사이를 구분하는 데 사용할 수 있습니다.

  • "배열" 및 "포인터" 형식은 오버로드된 함수 사이를 구분하는 목적을 동일한 것으로 간주됩니다. 이는 1차원 배열에만 적용됩니다. 따라서 다음의 오버로드된 함수는 충돌하여 오류 메시지를 생성합니다.

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

    다차원 배열의 경우 둘째 및 이후의 모든 차원은 형식의 일부로 간주됩니다. 따라서 이들은 오버로드된 함수를 구별하는 데 사용됩니다.

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

참고 항목

참조

오버로드 개요