C++ 類繼承/虛繼承/多重繼承

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個字節

這就是虛繼承的作用,保存基類中的一份成員對象,多重繼承下更加的節省空間

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章