具有相同名称和名称parameter-type-list的成员函数声明,如果其中任何一个是静态成员函数声明,则不能重载。例如,下面的程序在编译时失败:
#include<iostream>
class Test {
static void fun(int i) {}
void fun(int i) {}
};
int main()
{
Test t;
getchar();
return 0;
}
我不明白为什么下面的例子可以运行:
#include<iostream>
class Test {
public:
static void fun(double i) {
std::cout << i << "n";
}
void fun(int i) {
std::cout << i;
}
};
int main()
{
Test t;
t.fun(5.5);
t.fun(4);
return 0;
}
第二个示例将运行,因为两个函数中的参数类型不同,即第一个是double,第二个是int。函数重载发生了
函数重载只有在你有不同的参数集时才有效,在这个例子中,它是int和double。修改参数数据类型