Inside the C++ Object Model:7、站在对象模型的尖端


7.1 Template


它甚至被使用于一项所谓的 template metaroprograms 技术:
class expression templates 将在编译时期而非执行期被评估,因而带来重大的效率提升。


Template 的 “实例化” 行为


Template 的错误报告


Template 中的名称决议法


Member Function 的实例化行为



7.2 异常处理


为了维护执行速度,编译器可以在编译时期建立起用于支持的数据结构。这会使程序的大小发生膨胀,但编译器可以几乎忽略这些结构,直到有个 exception 被抛出来。

为了维护程序大小,编译器可以在执行期建立起用于支持的数据结构,这会影响程序的执行速度,但意味着编译器只有必要的时候才建立那些数据结构。


Exception Handling 快速检阅

C++ 的 exception handling 由三个主要的语汇组件构成:
一个 throw 子句、一个或多个 catch 子句、一个 try 区段。


对 Exception Handling 的支持

当一个 exception 发生时,编译系统必须完成以下事情:

检查发生 throw 操作的函数。

决定 throw 操作是否发生在 try 区段。

若是,编译系统必须把 exception type 拿来和每一个 catch 子句进行比较。

如果比较后吻合,流程控制应该交到 catch 子句中。

如果 throw 的发生并不在 try 区段中,或没有一个 catch 子句吻合,那么系统必须 :a) 摧毁所有 active local objects,b) 从堆栈中将目前的函数 “unwind” 掉,c) 进行到程序堆栈的下一个函数中去,然后重复上述步骤 2~5。



7.3 执行期类型识别


Type-Safe Downcast


Type-Safe Dynamic Cast


Reference 并不是 Pointers


Typeid 运算符



7.4 效率有了,弹性呢?


动态共享函数库


共享内存


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值