基类加析构函数加virtual的重要性
来源:互联网 发布:曾舜晞粤读软件 编辑:程序博客网 时间:2024/06/06 03:17
例子:
#include <iostream>#include <stdio.h>#include <string.h>using namespace std;class PER1{public: PER1(){cout<<"create PER1"<<endl;}; virtual ~PER1(){cout<<"exit PER1"<<endl;}; //~PER1(){cout<<"exit PER1"<<endl;};};class PER2:public PER1{private: char* p;public: PER2(){ cout<<"create PER2"<<endl; p = new char[5]; }; ~PER2(){ cout<<"exit PER2"<<endl; cout<<"delete p"<<endl; delete p; };};int main(){ PER1* p=new PER2; delete p; return 0;}结果:
create PER1
create PER2
exit PER2
delete p
exit PER1
不加virtual的结果是:
create PER1
create PER2
exit PER1
结论:当用一个基类的指针删除一个派生类的对象时,如果基类的析构函数没有加virtual声明,子类的析构函数将不会执行,造成内存泄漏
0 0
- 基类加析构函数加virtual的重要性
- 父类析构函数加virtual
- 基函数的析构函数要加virtual
- 析构函数前加virtual关键字的作用?
- 虚析构函数的重要性
- C函数的重要性
- 虚析构函数的重要性
- 在基类的析构函数中加virtual ,解决内存泄漏
- 逻辑的重要性,函数篇
- 拷贝构造函数的重要性
- 基类析钩函数要加virtual变为虚函数
- fishcat论 RMAN备份中加filesperset的重要性
- fishcat论 RMAN备份中加filesperset的重要性续
- c++ 析构函数为什么要加virtual
- c++学习日记 加virtual和不加virtual的区别
- C语言函数原型的重要性
- C语言中函数原型的重要性
- C++ 默认构造函数的重要性
- sed 使用 $var
- C#——WinForm登录界面
- 让webView适应屏幕大小
- Hbase 统计表行数的3种方式总结
- IOS开发之实现App消息推送(最新)
- 基类加析构函数加virtual的重要性
- css3圆角tab选项卡代码
- 【趋势科技实习录】UI添加滚动条
- CKEditor实现图片上传
- mysql 高性能的索引
- 上传头像功能
- 模拟日历计算 poj1008
- C++常见笔试题
- jquery实现加载更多