在C++中有两种class data members:static和non-static,以及三种class member functions:static、non-static 和virtual。
简单对象模型:
一个object由一系列的slots组成,每一个slot指向一个member,slots按members的声明次序排列。
表格驱动对象模型:
一个object 由指向两个表的指针组成,这两个表分别是:member function table——包含指向member functions的slots;data member table——直接包含data members。
C++对象模型:
non-static data members被配置与每一个object之内,static data members、static/non-static member functions被放在所有object之外。Vitrual functions以两个步骤支持:
1. 每个class拥有一个virtual table(vtbl)包含指向virtual functions的指针。
2. 每个object拥有一个vptr(指向vtbl的指针),vptr由constructor、destructor和copy assignment运算符完成设定和重置。