C++对象模型

C++在布局及存取时间上主要额外负担是由virtual引起的,包括

  • virtual function机制,支持运行期绑定(runtime binding)
  • virtual base class,实现“多次出现在继承体系中的base class,有一个单一而被共享的实例”

C++的两种成员变量:static和nonstatic;三种成员函数:static,nonstatic和virtual

C++的对象模型中,Nonstatic data members放置于每一个class object内,static data members存放在个别的class object之外。static和nonstatic function members存放在个别的class object之外。virtual function由以下两个步骤支持:

  • 每个class产生出一堆指向virtual functions的指针,放在表格中,表格称为virtual table(vtbl)
  • 每个class object被安插一个指针,指向相关的virtual table,指针称为vptr。vptr的设定,重置都由每一个class的constructor、destructor和copy assignment运算符自动完成。每个class关联的type_info object(支持RTTI)也由virtual table指出来,放在表格的第一位。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值