C++之虚析构函数
来源:互联网 发布:怕死 陈奕迅 知乎 编辑:程序博客网 时间:2024/05/22 06:35
当用new运算符建立了临对象,若基类中有析构函数,并且定义了一个指向该基类的指针变量,在程序用带指针参数的delete运算符撤销对象时,会发生一个情况,系统只执行基类的析构函数,而不执行派生类的析构函数。原因是指针只找到了空间中与基类类型相同的部分,自然只调用基类的析构函数,可以看下面的例子:
#include<iostream>using namespace std;class A{public :A (){a=0;}~A(){cout<<"exeecuting A desturctor"<<endl;}private :int a;}; class B:public A{public :B(){b=1;}~B(){cout<<"executing B destructor"<<endl;}private :int b;}; void main(){A *p=new B;delete p;}输出:
exeecuting A desturctor如果希望执行派生类的析构函数·,则应该把基类的析构函数声明为虚析构函数。
此时与基类关联的所有派生类的析构函数都自动变为虚析构函数。
在程序中最好把基类的析构函数声明为虚析构函数。以保证在撤销内存动态分配空间时能得到正确的处理。
0 0
- C++---------之--------【虚析构函数】
- c++------------之---【虚析构函数应用】
- c函数之【时间函数】
- c函数之【数据结构函数】
- c函数之【随机数函数】
- c函数之【信号函数】
- c函数之【记录函数】
- c函数之【环境变量函数】
- c函数之【动态函数】
- c函数之【其他函数】
- C语言之函数
- C函数之strfry
- C函数之memstr
- c函数之offsetof
- C语言之函数
- C/C++之函数
- C语言之函数
- C-[之函数指针]
- 《C++ primer plus》附录G:STL方法与函数(一) 学习笔记
- webstorm2016.2激活方法
- 使用jdk和cglib实现动态代理
- Matrix Multiplication(找规律)
- TreeSet集合
- C++之虚析构函数
- ZOJ
- C++中bitset的使用
- cv::Mat 对像素进行操作取地址
- 数据结构与算法---栈
- css的6大布局方式
- 这个前端面试在搞事!
- object detection资料汇总
- leetcode551: Student Attendance Record I