对重载函数的限制

多个限制管理可接受的重载函数集:

  • 重载函数集内的任意两个函数必须具有不同的参数列表。

  • 仅基于返回类型重载具有相同类型的参数列表的函数是错误的。

    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] );
    

请参见

参考

重载概述