为什么析构函数常声明为虚函数?
来源:互联网 发布:黑客编程新手教学 编辑:程序博客网 时间:2024/05/22 10:55
析构函数的作用与构造函数正好相反,是在对象的生命期结束时,释放系统为对象所分配的空间,即要撤消一个对象。
用对象指针来调用一个函数,有以下两种情况:
如果是虚函数,会调用派生类中的版本。(在有派生类的情况下)
如果是非虚函数,会调用指针所指类型的实现版本。
析构函数也会遵循以上两种情况,因为析构函数也是函数嘛,不要把它看得太特殊。 当对象出了作用域或是我们删除对象指针,析构函数就会被调用。
当派生类对象出了作用域,派生类的析构函数会先调用,然后再调用它父类的析构函数, 这样能保证分配给对象的内存得到正确释放。
但是,如果我们删除一个指向派生类对象的基类指针,而基类析构函数又是非虚的话, 那么就会先调用基类的析构函数(上面第2种情况),派生类的析构函数得不到调用。
1 0
- 为什么析构函数常声明为虚函数
- 为什么析构函数常声明为虚函数
- 为什么析构函数常声明为虚函数
- 为什么析构函数常声明为虚函数?
- 为什么构造函数不能声明为虚函数,析构函数可以声明为虚函数
- 为什么析构函数常常声明为虚函数
- c++ 为什么析构函数必须声明为虚函数
- 为什么要将基类的析构函数声明为虚函数
- 为什么构造函数不可以声明为虚函数,而析构函数最好声明为虚函数
- 为什么构造函数不可以被声明为虚函数而析构函数有时候必须声明为虚函数
- 为什么构造函数不能声明为虚函数,析构函数可以
- 为什么构造函数不能声明为虚函数,析构函数可以
- 为什么构造函数不能声明为虚函数,析构函数可以
- 为什么构造函数不能声明为虚函数,析构函数可以
- 为什么构造函数不能声明为虚函数,析构函数可以
- 为什么构造函数不能声明为虚函数,析构函数可以
- 为什么构造函数不能声明为虚函数,析构函数可以
- 为什么构造函数不能声明为虚函数,析构函数可以
- MongoDB从不懂到装懂其四(数据备份、恢复、导入、导出)
- <<More Effective C++>>读书笔记2: 运算符
- day2 HDU 2141 Can you find it?
- [李景山php]每天laravel-20160921|Redis Database.php
- 基于FPGA的Alpha半透明图像叠加算法实现
- 为什么析构函数常声明为虚函数?
- python 模拟登录csdn并获取博客列表等操作
- 快学scala 第十一章 操作符 读书笔记及习题答案代码
- 深入理解 Android 中的 Matrix
- Android 6.0 通话UI设计模式分析(MVC\MVP\MVVM)
- Post Views Options怎么设置,WP-PostViews的后台设置五步法详解
- java反向工程神器ermaster
- 几款极好的 JavaScript 文件上传插件
- Hadoop:基础环境配置