多个限制管理可接受的重载函数集:
重载函数集内的任意两个函数必须具有不同的参数列表。
仅基于返回类型重载具有相同类型的参数列表的函数是错误的。
Microsoft 专用
可以仅根据返回类型重载 operator new - 具体而言,根据指定的内存模型修饰符。
结束 Microsoft 专用
不能只根据一个静态类型和一个非静态类型来重载成员函数。
typedef 声明不定义新类型;它们引入现有类型的同义词。 它们不影响重载机制。 考虑下列代码:
typedef char * PSTR; void Print( char *szToPrint ); void Print( PSTR szToPrint );
前面的两个函数具有相同的参数列表。 PSTR 是类型 char * 的同义词。 在成员范围内,此代码生成错误。
枚举类型是不同的类型,并且可用于区分重载函数。
就区分重载函数而言,类型“array of”和“pointer to”是等效的。 此情况仅适用于单维度数组。 因此,以下重载函数会发生冲突并生成错误消息:
void Print( char *szToPrint ); void Print( char szToPrint[] );
对于多维数组,第二个和后续维度被视为类型的一部分。 因此,它们可用来区分重载函数:
void Print( char szToPrint[] ); void Print( char szToPrint[][7] ); void Print( char szToPrint[][9][42] );