参看: http://blog.csdn.net/it_yuan/article/details/24651347
内存布局
类中的元素
- 成员变量 1. 成员函数 2. 静态成员变量 3. 静态成员函数 4. 虚函数 5. 纯虚函数
影响对象大小的因素
成员变量 1. 虚函数表指针(_vftptr) 2. 虚基类表指针(_vbtptr) 3. 内存对齐
- _vftptr、_vbtptr的初始化由对象的构造函数, 赋值运算符自动完成;对象生命周期结束后,由对象的析构函数来销毁。
- 对象所关联的类型(type_info),通常放在virtual table的第一个slot中。
单一类
空类
sizeof(CNull)=1(用于标识该对象)
只有成员变量的类
nt nVarSize = sizeof(CVariable) = 12
只有虚函数的类
int nVFuntionSize = sizeof(CVFuction) = 4(虚表指针)
单一继承
int nChildSize = sizeof(CChildren) = 12
多继承
int nChildSize = sizeof(CChildren) = 20