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 效率有了,弹性呢?
动态共享函数库
共享内存