条款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析构函数。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容