C++ 中的多重繼承,所涉及的類的大小
這裏的結構 :
T
/ \
T1 T2
\ /
T3
class T
{
public:
void dis(){}
public:
int m;
};
class T1:public T
{
public:
int m1;
};
class T2 :public T
{
public:
int m2;
};
class T3 :public T1,public T2
{
public:
int m3;
};
則T,T1,T2,T3大小
T,T1,T2應該都沒問題,T3這裏將 T1,T2 繼承下來則
T3 <----- T1 ( m,m1) T2(m,m2)
16 + 4 = 20, 相當於 T3中m有兩份
這裏用虛繼承
class T1:public T 變爲 class T1:public virtual T
class T2:public T 變爲 class T2:public virtual T
則輸出大小
因爲T1,T2多了虛基類表指針32bit下佔4個字節,則變爲12
T3則正常了,m在T3中只會有一份,則爲24個字節
這就是虛繼承的作用,保存基類中的一份成員對象,多重繼承下更加的節省空間