非成员函数可以多次声明,而成员函数只能声明一次?

Gob*_*0st 2 c++ member-functions declare non-member-functions

非mumber函数可以多次delcared,而成员函数只能声明一次?这是正确的吗 ?我的例子似乎说是的.

但为什么 ?

class Base{
public:
    int foo(int i);
    //int foo(int i=10); //error C2535: 'void Base::foo(int)' : member function already defined or declared
};

//but it seems ok to declare it multiple times
int foo(int i);
int foo(int i=10);

int foo(int i)
{
    return i;
}

int main (void)
{
    int i = foo();//i is 10 
}
Run Code Online (Sandbox Code Playgroud)

Naw*_*waz 6

从标准(2003),§8.3.6/ 4说,

对于非模板函数,可以在稍后的同一范围内的函数声明中添加默认参数.

标准本身的示例:

void f(int, int);
void f(int, int = 7);
Run Code Online (Sandbox Code Playgroud)

第二个声明添加默认值!

另见§8.3.6/ 6.

还有一个有趣的(有点相关的)主题:

并且§9.3/ 2,

除了出现在类定义之外的成员函数定义之外,除了出现在类定义之外的类模板和成员函数模板(14.7)的成员函数的显式特化之外,不应重新声明成员函数.

希望有所帮助.