天天看點

對象記憶體布局 (3)

内容概要:

滿足下面2個條件時,

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

2. 非虛繼承

類對象之記憶體布局

如果将Base中的兩個虛函數删除,情況有會怎麼樣呢?

将Base中的兩個虛函數删除,其他保持不變。Base類和Derived類兩者之間的關系如下:

代碼如下:

運作結果如下:

對象記憶體布局 (3)

Derived對象的memory layout圖解如下:

這次由于Base類中不存在虛函數,是以在Derived類對象中的Base subobject就不會有vptr了,但Derived類中有虛函數,是以它的對象中就有vptr了。