条款07:为多态基类声明virtual析构函数

  1. 为多态基类声明virtual析构函数的好处:当使用基类指针指向派生类的情况下:
TimeKeeper* ptk = getTimeKeeper();//factory
...
delete ptk;

当delete ptk的时候会造成“局部销毁”的后果。

  1. 在该类不做为基类并且类内没有virtual的成员函数的情况下,将析构函数声明为virtual的是不明智的,因为:
    • 显著增加运行时内存
    • 程序将变得不可移植

心得:只有当class内含至少一个virtual函数,才为它声明virtual析构函数。

  1. 不要将string、vector、list、set、unordered_map等stl容器当做基类,因为它们都没有virtual析构函数。

你可能感兴趣的:(条款07:为多态基类声明virtual析构函数)