《深度探索C++对象模型》3

第六章:执行期语意学

全局对象的初始化:

《深度探索C++对象模型》3《深度探索C++对象模型》3

 

 

局部静态对象的初始化:

《深度探索C++对象模型》3

构建对象数组的vec_new()函数:

《深度探索C++对象模型》3

针对数组的new操作:

《深度探索C++对象模型》3

 

placement operator new:

《深度探索C++对象模型》3

反聚合提高效率:

《深度探索C++对象模型》3

 模板对name决议规则:

《深度探索C++对象模型》3

《深度探索C++对象模型》3

 虚函数表放在类的第一个非内联非虚函数定义的文件中:

《深度探索C++对象模型》3

 

明确要求将template具现出来(整个class、个别成员函数、):

《深度探索C++对象模型》3

异常处理需要编译器产生数据结构及运行期异常库合作:

《深度探索C++对象模型》3

因此需要在程序大小和执行速度之间有所抉择。

 

C++异常处理语法:

《深度探索C++对象模型》3

异常发生时编译系统处理步骤:
《深度探索C++对象模型》3

编译器会为每一个异常和catch子句产生类型描述器,当异常产生时通过比较类型描述器处理:

《深度探索C++对象模型》3

异常的抛出和传递:

 

 

 

 

 

 

 

 

 

《深度探索C++对象模型》3《深度探索C++对象模型》3

《深度探索C++对象模型》3

《深度探索C++对象模型》3

C++异常处理付出代价最大:

《深度探索C++对象模型》3

dynamic_cast:

《深度探索C++对象模型》3

dynamic_cast运算符也可作用于reference:

《深度探索C++对象模型》3

typeid运算符可以作用于reference:

《深度探索C++对象模型》3

type_info:

《深度探索C++对象模型》3

《深度探索C++对象模型》3

 C++的优劣——效率与弹性:

《深度探索C++对象模型》3