博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[转载]析构函数的虚析构和非虚析构调用的差别
阅读量:5125 次
发布时间:2019-06-13

本文共 1193 字,大约阅读时间需要 3 分钟。

 

 

代码示例:

非虚析构的情况下.

#include 
#include
using namespace std;class A{public: A() { std::cout << "A is created." << std::endl; } ~A() { std::cout << "A is deleted." << std::endl; }}; class B : public A{public: B() { std::cout << "B is created." << std::endl; } ~B() { std::cout << "B is deleted." << std::endl; }}; int main(){ A* pA = new B(); delete pA; return 0;}

虚析构的情况下.

#include 
#include
using namespace std;class A{public: A() { std::cout << "A is created." << std::endl; } virtual ~A() { std::cout << "A is deleted." << std::endl; }}; class B : public A{public: B() { std::cout << "B is created." << std::endl; } ~B() { std::cout << "B is deleted." << std::endl; }}; int main(){ A* pA = new B(); delete pA; return 0;}

 

如果在类型B中创建了一些资源,比如文件句柄、内存等,在这种情况下都得不到释放,从而导致资源泄漏。

转载于:https://www.cnblogs.com/dsdr/p/6087115.html

你可能感兴趣的文章
线性回归的Spark实现 [Linear Regression / Machine Learning / Spark]
查看>>
贝叶斯原理及其推断简介
查看>>
根据txt文件处理的方法总结
查看>>
uWSGI安装配置
查看>>
django_4:数据库1——django操作数据库
查看>>
grid layout
查看>>
VUE 使用中踩过的坑
查看>>
Solarized ----vim配色方案
查看>>
2019湖南多校第三场
查看>>
数据库连接
查看>>
如何写一个计算器?
查看>>
为什么选用 React 创建混合型移动应用?
查看>>
手把手教你撸一个简易的 webpack
查看>>
CLOSE_WAIT状态的原因与解决方法
查看>>
分页笔记
查看>>
WEB基本架构
查看>>
LOJ#6002. 「网络流 24 题」最小路径覆盖
查看>>
随笔2 PAT1001.A+B Format (20)
查看>>
No projects are found to import
查看>>
VM异常关闭后导致虚拟机无法打开问题解决办法【已解决】
查看>>