继承时二义性问题

class Base1
{
public:
int x;
int fun1();
int fun2();
int fun2(int);
int fun3(); 
};
class Base2
{
public:
char fun2();
int fun3();
private:
int x;
int fun1();
};
class Derived:public Base1,public Base2
{
};
void main()
{
Derived d;
d.x=1;  
d.fun1();
d.fun2();
d.fun2(10);
d.fun3();
}
在base2中fun1是private。d是不能调用的。为什么d.fun1还能有二义性能

作者: qq7489451   发布时间: 2011-06-14

用虚继承的方式可以消除。

参考:
C++虚继承防止二义性

作者: pathuang68   发布时间: 2011-06-14