[转载]析构函数的虚析构和非虚析构调用的差别
生活随笔
收集整理的這篇文章主要介紹了
[转载]析构函数的虚析构和非虚析构调用的差别
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?
?
代碼示例:
非虛析構的情況下.
#include <stdio.h> #include <iostream>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 <stdio.h> #include <iostream>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
總結
以上是生活随笔為你收集整理的[转载]析构函数的虚析构和非虚析构调用的差别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 小猪的Python学习之旅 —— 22
- 下一篇: 需求分析文档模板