一位学长去面试遇到了这样一道题:
#include<iostream>
using namespace std;
class Test
{
public:
Test()
{}
~Test()
{
delete this;
}
};
int main()
{
Test a;
return 0;
}
**大家来说下程序的运行结果是什么?乍一看没问题啊,实则不然,
程序崩溃!!!
**我们来好好看一遍代码,分析下程序:
1)注意:delete可以释放任何指针
2)当我们释放对象的时候,调用析构函数,delete掉对象,但是这时候delete的是this,this又会调用自己的析构函数,又进入delete,如此往复,程序崩溃