为多态基类声明virtual 析构函数 Declear destructor virtual in polymorphic base classes.
c++中明白指出 当derived class对象经由一个base class 指针被删除,而该base class带着一个non-virtual 析构函数,其结果没有定义------实际执行时通常发生的是对象的derived成分没被销毁。
消除这个问题很简单:给base class 一个virtual 析构函数。
当类不企图做base class时,令其析构函数为virtual 往往也是馊主意。------这会导致其对象体积的增加(实现virtual函数,对象必须携带某些信息,如虚表指针vptr)。
纯虚函数 pure virtual
请记住
1. polymorphic(带多态性质的)base class 应该声明一个virtual 析构函数。如果class带有任何virtual函数,它就应该拥有一个virtual 析构函数。
2. Classes的设计目的如果不是作为base classes 使用,或不是为了具备多态性(polymorphic),就不该声明virtual析构函数。