一、多級混合繼承
下面先介紹菱形繼承
//菱形繼承
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的后面