class A
{
public:
int _a;
};
class B: public A
{
public:
int _b;
};
class C : public A
{
public:
int _c;
};
class D : public B, public C
{
public:
int _d;
};
int main()
{
D d;
//d._a = 1;编译不能通过 菱形继承的二义性
d.B::_a = 2;
d.C::_a = 3;//但是这个也存在数据冗余 A B C D 都有_a
//所以菱形继承问题存在数据冗余和二义性问题----->解决方案虚继承
d._b = 4;
d._c = 5;
d._d = 6;
return 0;
}
class A
{
public:
int _a;
};
class B : virtual public A
{
public:
int _b;
};
class C : virtual public A
{
public:
int _c;
};
class D : public B, public C
{
public:
int _d;
};
int main()
{
D d;
//d._a = 1;编译不能通过 菱形继承的二义性
d.B::_a = 2;
d.C::_a = 3;
d._b = 4;
d._c = 5;
d._d = 6;
d._a = 7;
return 0;
}