您的位置:首页 > 移动开发 > Objective-C

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

2011-07-10 20:02 465 查看
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的指针。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: