effective C++ 读后感(七)为多态基类声明virtual析构函数
来源:互联网 发布:网络教育本科是几本 编辑:程序博客网 时间:2024/05/16 04:46
七、为多态基类声明virtual析构函数
当我们使用工厂设计模式时,factory函数往往返回一个基类指针,指向一个新生成的子类对象。但是,如果对这个对象执行delete,就有可能会出现问题:要是基类的析构函数不是virtual的,那么析构函数不具有多态性,子类的析构函数不会被执行,可能造成内在泄漏。
所以说,如果我们定义一个类,要将其作为基类实现多态,那么这个类的析构函数应该设定为virtual的。
不过,如果一个类不被用作多态基类,将其析构函数定为virtual的往往是个坏主意,因为声明为virtual后该类就会有一个虑函数表,由一个虑函数表指针指出,这样会占用更多的空间。一般规则是:只有当类中至少且个virtual函数,才为它声明virtual析构函数。
这也表明,我们不应该让自己编写的类继承自一个析构函数不为virtual的类。比如说string,各种STL容器。
将析构函数声明为virtual的还有一个用途:当我们希望一个类为抽象类,但又没有任何纯虚函数,这时可能将析构函数声明为纯虚函数(当然因为最终会被调用,所以不要忘了实现它)。
0 0
- effective C++ 读后感(七)为多态基类声明virtual析构函数
- Effective C++读后感:为多态基类声明virtual析构函数
- Effective C++读书笔记之七:为多态基类声明virtual析构函数
- effective c++ 为多态基类声明virtual析构函数
- Effective C++ 07:为多态基类声明virtual析构函数
- 《Effective C++》学习笔记条款07 为多态基类声明virtual析构函数
- Effective C++(7) 为多态基类声明virtual析构函数 or Not
- Effective C++——》条款7:为多态基类声明virtual析构函数 .
- Effective C++:条款07:为多态基类声明virtual析构函数
- [Effective C++]条款07 为多态基类声明virtual析构函数
- Effective c++(第三版) 条款7:为多态基类声明virtual析构函数
- Effective C++--条款07:为多态基类声明virtual析构函数
- 读书笔记《Effective C++》条款07:为多态基类声明virtual析构函数
- (原文)Effective C++条款7:为多态基类声明VIRTUAL析构函数
- effective c++ 条款07(为多态基类声明virtual析构函数)整理
- Effective C++读书笔记---为多态基类声明为virtual析构函数
- effective c++ 条款7,8(为多态基类声明virtual析构函数,别让异常逃离析构函数)
- [翻译] Effective C++, 3rd Edition, Item 7: 在 polymorphic base classes(多态基类)中将 destructors(析构函数)声明为 virtual(虚拟)
- 考驾照的时间限制应该被缩小
- unity提取打包资源
- 使用Arduino与DHT11监测温湿度
- 观察者模式
- 65个源码下载站
- effective C++ 读后感(七)为多态基类声明virtual析构函数
- c语言函数strlen和关键字sizeof区别
- c 判断两个链表是否相交
- WeiKuCMS多功能微信营销服务系统
- C# 串口操作系列(3) -- 协议篇,二进制协议数据解析
- Axure生成原型时,有Install Axure RP Extension 0.5 for Chrome提示,安装后,仍不能解决问题?
- 健康的好的话肯定会看到好看
- 用HTML格式发送邮件
- paypal的IPN机制