构造、析构、拷贝语意学
对于abstract base class(抽象基类),class中的data member应该被初始化,并且只在constructor中或者在其他member functions中指定初值 纯虚函数的存在 纯虚函数的意义在于只定义一个可继承的接口,并没有实现(虚函数意义在于定义一个可继承的接口并且有一份缺省实现,普通的成员函数意义在于定义一个可继承的接口并且有一份强制实现) 纯虚函数不能经由虚拟机制调用,但是可以被静态地调用(invoked statically, AbsractClassName::pureFunction() ) 对于pure virtual destructor,一定要定义它,因为每一个derived class destructor会被编译器加以扩张,以静态调用的方式调用其”每一个virtual base class”以及”上一层base class”的destructor,因此只要缺乏何一个base class destructor的定义,就会导致链接失败。 编译器不会合成一个pure virtual destructor的函数定义。 一个较好的替代方案就是:不要把virtual destructor声明成pure 虚拟规格的存在 一个函数几乎不会被后继的derived class改写,而且是inline函数