摘要:...这一章主要讨论三个著名的C++语言扩充性质,它们分别是:template,exception和runtime type identification.7.1 template: 有关template的三个主要讨论方向: 1)template的声明,基本上来说就是当你声明一个template class,template class member function等等时,会发生什么事. 2)如何具现出class object以及inline nonmember,以及member template functions,这些是"每一个编译单位都会拥有一份实体"的东西. 3)
阅读全文
摘要:6.1 对象的构造和解构: 如果一个区段(以{}括起来的区域)或是函数中有一个以上的离开点,情况会混乱一些,因为destructor必须放在每一个离开点(当object还活着时)之前,同样,goto语句也可能需要许多个destructor调用操作,一般而言,我们会把object尽可能放置在使用它的那个程序区段附近,这样做可以节省不必要的对象产生和摧毁操作....全局对象:例如有如下程序片段:Matrix identity;main(){ Matrix mi=identity; //... //... return 0;} C++保证,一定会在main()函数中第一次用到identity之前,把
阅读全文
摘要:...引子:每一个derived class destructor会被编译器扩展,以静态调用的方式调用其"每一个virtual base class"以及"上一层base class的destructor",因此,只要缺乏任何一个base class destructor的定义,就会导致链接的失败,并且,比较好的设计模式是,不要把virtual destructor声明为pure. 一般而言,把所有的成员函数声明为virtual function,然后在靠编译器的优化操作把不必要的额外virtual invocation去处,不是一个好的设计理念. 关于
阅读全文