Inside The C++ Object Model :note (1)

1.C++ 在布局以及存取时间上的主要的额外开销是由virtual引起,包括:virtual function机制:用以支持一个小效率的执行期绑定

                                                                                                                              virtual base class 用以实现“多次出现在集成体系中的base class,有一个单一而被共享的实体”

另外还有一些额外开销,发生在“一个派生类和其第二或后继之基类之间的转换”之间。

 

2.C++对象模型

i.简单模型

  一个对象有一系列的slots(指向成员的指针)组成(指针数组),每个slot(指针)指向一个成员。

注:此模型未应用于实际产品

ii.表格驱动对象模型

对象维护两个slots,分别指向数据成员表和函数成员表

注:此模型未实际应用于产品

iii.C++对象模型

非静态数据成员被配置在每一个对象之内,静态数据成员,静态和非静态函数成员被放在所有对象之外

虚函数则以两个步骤支持:1.每个类对象维护一个指向virtual table(vtbl)的指针(vptr).vptr的设定和重置都由每个类的constructor,destructor和copy assignment

运算符自动完成。每个类所关联的type_info object用以支持runtime type identification,RTTI.

                                                2.vtbl是一个指针数组,维护指向类之virtual function的指针。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值