오버로드된 함수에 대한 제한
여러 제한은 사용할 수 있는 오버로드된 함수 집합을 관리합니다.
오버로드된 함수 집합의 임의의 두 함수에는 서로 다른 인수 목록이 있어야 합니다.
반환 형식을 기준으로 동일한 형식의 인수 목록을 가진 함수를 오버 로드하면 오류가 발생합니다.
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] );