c++對象模型-對象模型

1:簡單對象模型
1>介紹:每個成員都使用一個指針指向真正的成員。所以對象
的大小很好確定,就是成員數*指針大小。
2>用途:成員函數就是使用這個模型的
3>圖:這裏寫圖片描述
4>加上繼承:每增加一個基類,就多一個指針。
2:表格驅動對象模型
1>介紹:把所有和members相關的信息抽出來,放在data
member table 和 member function table中
2>用途:virtual function
3>圖:這裏寫圖片描述
4>加上繼承:增加一個base table,一個base ptr
在class對象中存放一個ptr指向base table,在base
table中存放所有的base指針。但是相比於簡單對象
模型,這種方式會有兩層間接指向,所以會更浪費時
間。
5>圖:這裏寫圖片描述

3:c++對象模型
1>介紹:nonstatic data members 放在class object內
static data members 放在 class object 之外。static 和
nonstatic function members 放在class object外。對於
virtual functions則用vptr指向vtbl。每個vtbl的第一個位
置放置class的信息。
2>用途:c++對象
3>圖:這裏寫圖片描述
4>加上繼承:並不存放指針,而是把所有的base class
的data members直接放置在derived class object中。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章