一、多级混合继承
下面先介绍菱形继承
//菱形继承
class A
{
public:
int data;
};
class B:public A
{
public:
int data;
};
class C:public A
{
public:
int data;
};
class D:public B,public C
{
public:
int data;
};int main()
{
D c;
D.data=1;
D.B::data=2;//访问B中的
D.C.::data=3;//访问C中的
D.B::A::data=4;//访问B继承的A
D.C::A::data=5;//访问C继承的A
D.A::data=4;//错误,产生二义性,不知道是B、C中哪一个
}
类的内存大小
sizeof(D); //20
sizeof(B); //8
sizeof(C); //8
内存图解
D先继承于B再继承于C,所以B的数据放在D内存段的最前方,C放在B的后面