1.虚基表
(1)菱形继承
在菱形继承中,类D有两个_a,一个是B类从A类继承而来的,一个是C类从A类继承而来的,在D类赋值时必须指定是对哪个 _a赋值,否则会出现数据不确定问题。
所以菱形继承会造成数据的二义性。
//菱形继承
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.B::_a = 1;
d.C::_a = 2;
d._b = 3;
d._c = 4;
d._d = 5;
return 0;
}