| 发表于:2008-01-21 12:15:336楼 得分:5 |
在c++标准中, 别说你这两个函数参数完全相同, 就算是不一样的参数, 都会出现编译错误. 在多重继承中, 如果两个父类拥有同样名字的函数, 将会出现二义性, 无论参数是否相同, 均不会发生重载. 调用他们的唯一办法是显示的指明他们的域(父类名). 举个例子: - c/c++ code
#include <iostream>
using namespace std;
class f1
{
public:
void foo(int i) {cout<<"f1 ="<<i<<endl;}
};
class f2
{
public:
void foo(int i, int j) { cout<<"f2="<<i<<' '<<j<<endl;}
};
class s1 : public f1, public f2
{
};
int main()
{
s1 s;
s.f1::foo(10); //ok
s.f2::foo(10, 20); //ok
s.foo(30); //错误, 二义性的调用
s.foo(30, 40); //错误, 二义性的调用
return 0;
}
vs2005能够运行, 说明他不符合这条c++标准罢了. | | |
|