Declare destructors virtual in polymorphic base classes.
base class 未使用 virtual 析构函数的问题
当 derived class 对象经由一个 base class 指针被删除,而该 base class 的析构函数是 non-virtual 的,其结果未有定义(通常是调用 base class 的析构函数,而导致 derived 成分没有被销毁)。这种现象称为“局部销毁”,它会造成资源泄漏、败坏数据结构、在调试器上浪费时间等问题。