关闭

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

157人阅读 评论(0) 收藏 举报

    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处。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:6214次
    • 积分:122
    • 等级:
    • 排名:千里之外
    • 原创:7篇
    • 转载:4篇
    • 译文:0篇
    • 评论:0条
    文章分类