C++对象模型

1.简单对象模型
一个Object由一系列的slots构成,每个slot指向一个data member或constructor或destructor或function member。Object只包含指针。每个base class subobject都可由一个slot指出。

优点:编译器设计简单。
缺点:空间和执行期效率。

2.表格驱动对象模型
分为两个table,一个指向data member table(直接含实际数据),一个指向function member table(内含函数地址)。
优点:可以方便地支持virtual function。
缺点:空间和执行期效率。

3.C++对象模型
每个Object直接包含实际的data member,在最后添加一个指针vptr指向virtual table(内含一系列virtual function指针和一个通常在最前面的RTTI指针)。vptr的设定和重置由constructor,destructor和copy assignment自动完成。
优点:空间和时间效率高。
缺点:与之相关的base class代码修改后都得重新编译。

-- 《Inside The C++ Object Model》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值