C++对象模型

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++对象模型)