《深度探索C++对象模型》学习笔记——C++对象模型

来源:互联网 发布:阿尔法围棋软件 编辑:程序博客网 时间:2024/06/11 04:22

    Stroustrup 当初设计(当前亦仍占有优势)的C++对象模型是从简单对象模型派生而来的,并对内存空间和存取时间做了优化。在此模型中,Nonstaic data members 被配置于每一个class object之内,static data members 则被存放在所有的 class object 之外。static 和 nonstatic function members 也被放在所有的 class object 之外。virtual functions 则以两个步骤支持之:

    1、每一个 class 产生出一堆指向 virtual functions 的指针,放在表格之中。这个表格被称为 virtual table(vtbl)。

    2、每一个 class object 被添加了一个指针,指向相关的 virtual table。通常这个指针被称为 vptr。vptr 的设定和重置都由每一个 class 的 constructor、destructor 和 copy assignment 运算符自动完成。每一个 class 所关联的 type_info object(用以支持 runtime type identification,RTTI)也经由 virtual table 被指出来,通常是放在表格的第一个slot处。