码迷,mamicode.com
首页 > 其他好文 > 详细

关于对象(对象模型)

时间:2015-05-06 15:00:42      阅读:154      评论:0      收藏:0      [点我收藏+]

标签:

简单对象模型:如下图所示:

技术分享

每一个object是一系列的slots,每一个data member或者function member都有自己的一个slot。这种模型的空间和执行效率都很低。在这个模型中,members本身并不放在object之中。只有指向member的指针才放在object内。

 

表格驱动模型:

技术分享

对象成员变量和成员变量函数各自放在一个表中,对象中有两个指针分别指向这两个表(这种模型是支持virtual  functions 的实现方式的)

 

c++对象模型:

 

技术分享

1. nonstatic data memger 放置在每个class object中

2. static data members放在class object之外

3. static 与 nonstatic function members被放在class objects之外的地方

4. virtual functions 以两个步骤支持:

class 产生指向virtural functions的指针,放在表格中,这个表格成为virtural table。每个对象安插一个指针,指向相关的virtual table,成为vptr。vptr的设定和重置由constructor, destructor, copy assignment完成。

type_info object (它是支持RTTI的)也是由tirtural table指出,位于表格的第一个slot中(所以在virtual  table中不光只有虚函数的地址)

关于对象(对象模型)

标签:

原文地址:http://www.cnblogs.com/MrZHj/p/4481729.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!