- 为多态基类声明virtual析构函数的好处:当使用基类指针指向派生类的情况下:
TimeKeeper* ptk = getTimeKeeper();//factory
...
delete ptk;
当delete ptk的时候会造成“局部销毁”的后果。
- 在该类不做为基类并且类内没有virtual的成员函数的情况下,将析构函数声明为virtual的是不明智的,因为:
- 显著增加运行时内存
- 程序将变得不可移植
心得:只有当class内含至少一个virtual函数,才为它声明virtual析构函数。
- 不要将string、vector、list、set、unordered_map等stl容器当做基类,因为它们都没有virtual析构函数。