物件記憶體布局 8

2021-06-18 06:42:42 字數 895 閱讀 1124

記憶體物件布局 (5)

的**中,在derived類中將三個基類中的虛函式分別覆蓋乙個,即分別覆蓋base1中宣告的vfbase1_1(),base2中宣告的vfbase2_1()以及base3中宣告的vfbase3_1()。保持其他**不變,修改後的derived**如下:

class derived : public base1, public base2, public base3

inline void vfbase1_1()

inline void vfbase2_1()

inline void vfbase3_1()

}; 執行結果如下:

derived物件的memory layout**如下:

derived中覆蓋的虛函式,分別出現在三個不同的虛函式表中,而且分別代替個基類的原虛函式的位置,即:

第乙個虛函式表中,derived::vfbase1_1()代替了base::vfbase1_1()的位置,base::vfbase1_1()不再在虛函式表中出現;

第二個虛函式表中,derived::vfbase2_1()代替了base::vfbase2_1()的位置,base::vfbase2_1()不再在虛函式表中出現;

第三個虛函式表中,derived::vfbase3_1()代替了base::vfbase3_1()的位置,base::vfbase3_1()不再在虛函式表中出現;

在derived中自己定義的虛函式,總是處在第乙個虛函式表的最後一項的位置。

物件記憶體布局 8

在記憶體物件布局 5 的 中,在derived類中將三個基類中的虛函式分別覆蓋乙個,即分別覆蓋base1中宣告的vfbase1 1 base2中宣告的vfbase2 1 以及base3中宣告的vfbase3 1 保持其他 不變,修改後的derived 如下 class derived public ...

物件記憶體布局 1

內容概要 滿足下面2個條件時,1.父類有虛函式,子類無虛函式 即無虛函式重寫或無虛函式覆蓋 2.非虛繼承 類物件之記憶體布局1.base類中有兩個虛函式vfbase 1 vfbase 2 和乙個整形成員變數m base,derived類中有乙個整形成員變數m derived,二者的關係如下 如下 i...

物件記憶體布局 3

內容概要 滿足下面2個條件時,1.父類無虛函式,子類有虛函式 2.非虛繼承 類物件之記憶體布局 前篇 http blog.csdn.net pathuang68 archive 2009 04 23 4101977.aspx 如果將base中的兩個虛函式刪除,情況有會怎麼樣呢?將base中的兩個虛函...