前篇:http://blog.csdn.net/pathuang68/archive/2009/04/21/4096521.aspx
下面的**中,類base中定義了兩個虛函式vfbase_1()和vfbase_2(),另外還定義了乙個整形成員變數m_base;
#include
using namespace std;
class base
inline virtual void vfbase_2()
}; // 定義乙個函式指標型別,返回值型別為void,引數型別為void
typedef void (*vfun)(void);
// 獲取虛函式表中的虛函式指標,其中b為帶有虛函式的類的物件的位址,i為虛函式表中虛函式的順序
vfun virtualfunctionpointer(base* b, int i)
int main(void)
return 0; }
執行結果為:
類base的物件的memory layout如下圖:
帶有虛表的類的記憶體分布總結
這個問題一直似是而非的,昨天閒著無事,便細看一下,發現還是挺容易的。總結起來可以分為以下幾塊 1 空類的記憶體分布 2 帶變數的類的記憶體分布 3 帶虛函式的類的記憶體分布 4 帶虛函式的子類的記憶體分布 5 關於虛析構的描述 6 關於純虛函式為何必須在子類中實現的問題。未完成部分 1 關於虛基類的...
C 物件記憶體布局 測試虛函式表屬於類
c 物件記憶體布局 測試虛函式表屬於類 測試1 同乙個類的多個物件共享同一張虛函式表。虛函式表.cpp 2010年8月18日 測試虛函式表,說明虛函式表屬於類所有。同乙個類的多個物件共享同一張虛函式表 vs編譯器 include using namespace std class base virt...
C 虛函式 物件 類對應的位址
在c 中的多型中,我們通過位址的訪問來尋找虛函式 物件 類的位址。具體看 實現 include stdafx.h include using namespace std class a virtual void f int i class b public a virtual void f int ...