C++ 为什么设置基类的析构函数为虚函数
2016-02-16 11:25
441 查看
对象的析构函数调用顺序是从派生类到基类
那么如果基类的指针指向派生类的对象 还能正常的执行析构顺序吗
下面看一个类的声明
[cpp] view
plain copy
class Subject
{
public:
~Subject();
Subject();
};
class ConcreteSubject : public Subject
{
public :
ConcreteSubject();
~ConcreteSubject();
};
创建基类的指针 并删除该对象
[cpp] view
plain copy
Subject * con = new ConcreteSubject();
delete con;
结果显示只调用了基类的析构函数~Subject()
而派生类的析构函数~ConcreteSubject()没有调用
如果没有吧基类的析构函数设置为虚函数
那么是不会在执行时动态调用所指向对象的析构函数
则在运行时 对象没有被正常的释放 会产生一系列的内存问题
那么如果基类的指针指向派生类的对象 还能正常的执行析构顺序吗
下面看一个类的声明
[cpp] view
plain copy
class Subject
{
public:
~Subject();
Subject();
};
class ConcreteSubject : public Subject
{
public :
ConcreteSubject();
~ConcreteSubject();
};
创建基类的指针 并删除该对象
[cpp] view
plain copy
Subject * con = new ConcreteSubject();
delete con;
结果显示只调用了基类的析构函数~Subject()
而派生类的析构函数~ConcreteSubject()没有调用
如果没有吧基类的析构函数设置为虚函数
那么是不会在执行时动态调用所指向对象的析构函数
则在运行时 对象没有被正常的释放 会产生一系列的内存问题
相关文章推荐
- C语言解决百钱买百鸡问题
- C++ string TBD
- C语言-08-预处理器
- C++ 笔记
- C语言打印杨辉三角示例汇总
- c语言入门之项目1.3——指针变量
- C语言+win32api写窗体应用程序
- C++Primer第5版学习笔记(四)
- C++实现在文本中找出某个单词的位置信息
- C++ 中const和复合类型
- unordered学习(c++11)
- A*搜索四方向寻路 C++代码实现
- C++派生类的构造函数和析构函数
- How to define a template class in a .h file and implement it in a .cpp file
- c语言:∑k(k取[1,100])+∑k^2(k取[1,50])+∑1/k(k取[1,10])的和
- BGL_polyhedron_3/normals.cpp analysis
- 1644 免费馅饼 题解(c++)
- 1644 免费馅饼 题解(c++)
- cppcheck用法
- Generic Programming in C++