C 物件模型

2021-08-21 22:53:15 字數 671 閱讀 6669

1.簡單物件模型

乙個object由一系列的slots構成,每個slot指向乙個data member或constructor或destructor或function member。object只包含指標。每個base class subobject都可由乙個slot指出。

優點:編譯器設計簡單。

缺點:空間和執行期效率。

2.**驅動物件模型

分為兩個table,乙個指向data member table(直接含實際資料),乙個指向function member table(內含函式位址)。

優點:可以方便地支援virtual function。

缺點:空間和執行期效率。

3.c++物件模型

每個object直接包含實際的data member,在最後新增乙個指標vptr指向virtual table(內含一系列virtual function指標和乙個通常在最前面的rtti指標)。vptr的設定和重置由constructor,destructor和copy assignment自動完成。

優點:空間和時間效率高。

缺點:與之相關的base class**修改後都得重新編譯。

-- 《inside the c++ object model》

c 物件模型

很久之前就想總結一下c 的記憶體使用機制。直到現在剛考完試之制,去實習之前,才有時間完成這事。1.程式使用記憶體區 乙個程式占用的記憶體區一般分為5種 1 全域性 靜態資料區 儲存全域性變數及靜態變數 包括全域性靜態變數和區域性靜態變數 2 常量資料區 儲存程式中的常量字串等。3 區 儲存程式的 4...

C 物件模型

很久之前就想總結一下c 的記憶體使用機制。直到現在剛考完試之制,去實習之前,才有時間完成這事。1.程式使用記憶體區 乙個程式占用的記憶體區一般分為5種 1 全域性 靜態資料區 儲存全域性變數及靜態變數 包括全域性靜態變數和區域性靜態變數 2 常量資料區 儲存程式中的常量字串等。3 區 儲存程式的 4...

C 物件模型

簡單物件模型 乙個c 物件儲存了所有指向成員的指標,而成員本身不儲存在物件中。也就是說不論資料成員還是成員函式,也不論這個是普通成員函式還是虛函式,它們都儲存在物件本身之外,同時物件儲存指向它們的指標。示意圖如右。簡單物件模型對於編譯器來說雖然極盡簡單,但同時付出的代價是空間和執行期的效率.顯而易見...