delete是C++中的一个运算符,它是和new配合起来使用。我们知道new的实际操作是先分配一块内存,再调用对象的构造函数。而delete恰好和new的操作顺序相反,即先调用析构函数,再释放这块内存。
那现在的问题是如果在类的成员函数中调用delete this,也就是相当于“类对象的自杀”,会发生什么?
这里类的成员函数,大致分成类的普通成员函数和析构函数中对delete的调用。
实践是最好的验证方法,来看代码:
#include <iostream>
using namespace std;
class foo
{
private:
int a;
public:
foo() {
a = 10;
}
~foo() {
a = 0;
}
int test() {
cout << "a的值是 " << a << endl;
cout << "this保存的地址是 " << this << endl;
delete this;
}
};
int main(int argc, char const *argv[])
{
foo* f = new foo();
f->test();
return 0