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

第 3 章 Data语意学

时间:2018-01-07 16:05:15      阅读:115      评论:0      收藏:0      [点我收藏+]

标签:driver   cti   编译   使用   ima   data   body   除了   带来   

1.一个class object的内存空间,除了nonstatic data member外,还有:
          (1)编译器自动加的额外data member,包括vptr、bptr(指针)
          (2)alignment(边界校准)的需求而添加的pad空间。
 
2.对于nonstatic和static成员变量的存取上,没有时间和空间上的差异。
 
3.若多个class有相同名称的static data member,则编译器会对他们进行暗中编码(name-mangling),以获得独一无二的程序识别代码。 
 
4.使用多态后,带来了时间和空间的额外负担,主要有:
            (1)导入一个virtual table,存储每一个virtual function的地址。
            (2)在每一个class object 中加入vptr,指向virtual table。
            (3)加强constructor,用来为vptr设定初始值。
            (4)加强destructor,用来抹掉指向virtual table的vptr。
 
5.虚拟继承下:
            (1)class若有virtual base class,则其有两部分,一个不变区域(直接存取),一个共享区域(间接存取)。
            (2)虚拟继承中,driver class存在一个bptr,指向virtual base class,是间接存取。额外的间接存取会降低“把所有的处理都搬移到寄存器内执行”的优化能力。 虚拟继承的关系图如下:
                                                                  技术分享图片

 


 

第 3 章 Data语意学

标签:driver   cti   编译   使用   ima   data   body   除了   带来   

原文地址:https://www.cnblogs.com/ladawn/p/8227923.html

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