深度理解C++对象模型读书笔记——对象模型

来源:互联网 发布:深圳龙华淘宝客服招聘 编辑:程序博客网 时间:2024/05/21 06:51

1、简单对象模型

 在这种模型下,一个对象就是slots的集合,每个slot指向一个成员,指向的顺序室友申明顺序决定的。这时,一个class object的大小就是声明的个数乘以member的个数。这种模型不同类具有不同的大小。



2、表格驱动模型(没有用于实际C++编译器,但是member function table成为支持虚函数的一个方案)

在此模型下,对于任何类,都只有两个slot,一个指向数据成员表,另外一个指向函数成员表。数据成员表中直接有数据本身,而函数成员表中村的是地址。


3、C++对象模型

  它是从简单对象模型派生出来的,在此模型中,对内存和存取时间做了优化, nonstatic data member放在类内, static data member放在类外, static data members被放与个别的类外,static 和nonstatic函数成员也被放在类外,支持虚函数的方式用

1、用来保存虚函数指针的虚表(virtual table)简称vtbl

2、用来指向虚表(virtual table)的指针,简称vptr,它的设置和重置都是用类构造函数,析构函数指出。另外,每个类关联的type_info object(类本身信息,记录自己是谁),用来支持运行时类别识别特性也放在虚表中,通常放在第一个slot中


0 0