物件記憶體布局 3

2021-04-27 01:54:33 字數 555 閱讀 1545

內容概要:

滿足下面2個條件時,

1. 父類無虛函式,子類有虛函式

2. 非虛繼承

類物件之記憶體布局

前篇:http://blog.csdn.net/pathuang68/archive/2009/04/23/4101977.aspx

如果將base中的兩個虛函式刪除,情況有會怎麼樣呢?

將base中的兩個虛函式刪除,其他保持不變。base類和derived類兩者之間的關係如下:

執行結果如下:

derived物件的memory layout**如下:

這次由於base類中不存在虛函式,所以在derived類物件中的base subobject就不會有vptr了,但derived類中有虛函式,所以它的物件中就有vptr了。

後篇:http://blog.csdn.net/pathuang68/archive/2009/04/23/4101981.aspx

物件記憶體布局 3

內容概要 滿足下面2個條件時,1.父類無虛函式,子類有虛函式 2.非虛繼承 類物件之記憶體布局 如果將base中的兩個虛函式刪除,情況有會怎麼樣呢?將base中的兩個虛函式刪除,其他保持不變。base類和derived類兩者之間的關係如下 如下 include using namespace std...

物件記憶體布局 1

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

物件記憶體布局 7

前篇 在物件記憶體布局 5 的 中,在derived類中覆蓋base1中宣告的vfbase1 1 其他 不變。修改後的derived的定義如下 class derived public base1,public base2,public base3 inline void vfbase1 1 執行結...