C 物件記憶體布局 測試虛函式表屬於類

2021-09-08 07:22:41 字數 739 閱讀 2831

c++物件記憶體布局--①測試虛函式表屬於類

測試1:同乙個類的多個物件共享同一張虛函式表。

//虛函式表.cpp

//2023年8月18日

//測試虛函式表,說明虛函式表屬於類所有。同乙個類的多個物件共享同一張虛函式表

//vs編譯器

#include using namespace std;

class base

virtual ~base()

virtual void show()

private:

int a;

};int main()

/*base::base()

物件大小 = 8

虛函式表指標 = 0041c2b0

成員變數 a = 0000000a

通過指標呼叫虛函式表中的函式

base::show()

測試同乙個類的另乙個物件

base::base()

物件大小 = 8

虛函式表指標 = 0041c2b0

成員變數 a = 00000014

通過指標呼叫虛函式表中的函式

base::show()

請按任意鍵繼續. . .

base::~base

base::~base

*/

虛函式表與多型記憶體布局

參考部落格 c 中 的虛函式的作用主要是實現了多型的機制。關於多型,簡而言之就是用父型別別的指標指向其子類的例項,然後通過父類的指標呼叫實際子類的成員函式。這種技術 可以讓父類的指標有 多種形態 這是一種泛型技術。虛函式表 每個含有虛函式的類都有乙個虛函式表 virtual table 來實現的。簡...

物件記憶體模型(虛函式,虛函式表,虛指標)

從例子入手,考察如下帶有虛函式的類的物件記憶體模型 1 class a 11 12 class b a 20 21 class c b 注 在子類中出現與父類相同名稱的變數和非虛函式不是最佳實踐,這裡是為了說明其記憶體結構。其物件記憶體結構見下圖。於侯捷老師 對其分析如下 1.每個含有虛函式的類在記...

C 虛函式表的布局

針對虛函式表的結構與布局,寫了乙個程式驗證一下 首先看單一繼承的情況 class base virtual void y virtual void z class derive public base,public base2 重寫 virtual void y1 virtual void y 重寫...