[读书笔记]深度探索C++模型_第七章_站在对象模型的尖端

template、exception handling(EH)、runtime type identification(RTTI)

  1. template的声明。基本来说就是当你声明一个template class、template class member function等等时,会发生什么事情。
  2. 如何“实例化”class object、inline nonmember 以及 member template functions。这些事“每一个编译单位都会拥有一份实例”的东西。
  3. 如何“实例化”nonmember、member template functions以及static template class members。这些都是“每一个可执行文件中只需要一份实例”的东西。这也就是一般而言template所带来的问题。

    如果我们定义一个指针,指向特定的实例,

 Point< float >* ptr=0;

一个指向class object的指针,本身并不是一个class object,编译器不需要知道与该class有关的任何members的数据或object布局数据。

const Point< float >& ref=0;

真正的语意会被扩展为:

//内部扩展
Point< float > temporary( float(0));
const Point< float >& ref=0;

因为reference并不是无物(no object)的代名词。0被视为整数,必须被转换为以下类型的一个对象。Point< float >。如果没有转换的可能,这个定义就是错误的,会在编译时被挑出来。

7.2异常处理

处理资源管理问题,将资源(堆分配的,或者锁)需求封装于一个 class object 体内,并由 destructor 来释放资源。

7.3执行期类型识别

dynamic_cast运算符可以在执行期决定真正的类型。
typeid运算符传回一个const reference,类型为type_info>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值