#include <iostream>
using namespace std;
class base;
base* b = nullptr;
class base {
public:
base* m_b = nullptr;
base() {
m_b = this;
b = this;
}
~base() {
cout << "base 被析构\n";
}
};
class child :public base{
public:
child() {}
~child() {
delete m_b;//子类弑父
cout << "child 被析构\n";
}
}
;
class child2 :public base {
public:
child2() {}
~child2() {
cout << "child 被析构\n";
}
};
int main()
{
//子类弑父
child* c = new child();
delete c;
//弑父之仇
child2* c2 = new child2();
delete b;
delete c2;
std::cout << "Hello World!\n";
}
以上两种情况都会造成

本文探讨了C++中子类析构时可能出现的问题,如`child`类在析构时调用父类`base`的析构函数导致的内存泄漏。通过实例代码展示了如何避免`base`指针被误删,以及两种情况下`delete`操作的影响。
2520

被折叠的 条评论
为什么被折叠?



