從單繼承可以知道,派生類中只是擴充了基類的虛函式表。如果是多繼承的話,又是如何擴充的?
1)每個基類都有自己的虛表。
2)子類的成員函式被放到了第乙個基類的表中。
3)記憶體布局中,其父類布局依次按宣告順序排列。
4)每個基類的虛表中的
print()
函式都被
overwrite
成了子類的
print ()
。這樣做就是為了解決不同的基類型別的指標指向同乙個子類例項,而能夠呼叫到實際的函式。
上面3個類,derived_mutlip_inherit
繼承自base
、base_1
兩個類,
derived_mutlip_inherit
的結構如下所示:
為了驗證上述
c++物件模型,我們編寫如下測試**。
void test_multip_inherit()輸出結果如下圖所示:
C 物件模型(中)多繼承
例如下面 class b virtual void func 2 虛函式 protected int b class c virtual void func 3 虛函式 protected int c class d public b public c virtual void func 4 der...
C 物件模型 單繼承,多繼承,虛繼承
有兩個概念可以解釋c 物件模型 語言中直接支援物件導向程式設計的部分。對於各種支援的底層實現機制。資料成員分為靜態和非靜態,成員函式有靜態非靜態以及虛函式 class data members static和nonstatic class data functions static nonstati...
C 物件模型 單繼承,多繼承,虛繼承
有兩個概念可以解釋c 物件模型 語言中直接支援物件導向程式設計的部分。對於各種支援的底層實現機制。資料成員分為靜態和非靜態,成員函式有靜態非靜態以及虛函式 class data members static和nonstatic class data functions static nonstati...