C 物件模型5 多繼承下的物件模型

2022-04-10 12:59:31 字數 719 閱讀 4431

從單繼承可以知道,派生類中只是擴充了基類的虛函式表。如果是多繼承的話,又是如何擴充的?

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...