假设D类继承了B,C类,B,C类都继续了A类,默认情况下,D类中就有两份A类的成员变量和函数。如果要把他们合二为一,应该把类A定义为虚基类,使用virtual关键字.
#include
using namespace std;
class A
{
public:
int x;
};
class B :virtual public A
{
public:
int y;
};
class C:virtual public A
{
public:
int y;
};
class D:public B,public C
{
};
int main()
{
//可以看到,d.B::x,d.C::x,d.x输出是一样的
D d;
d.B::x=5;
cout<