在下面的代码中,我将构造函数和析构函数设为私有,并创建了自己的实例化和删除函数。但是当我调用该Delete()
函数时,delete this
它里面的语句似乎删除了对象但没有通知编译器,所以它认为对象仍然存在。我认为将指针设置为 null 或零是个好主意,所以我this = 0
在 delete 语句之前放了一个,但它根本不起作用。Delete()
为了完全删除对象及其指针,我应该在函数中放入什么?
class MyClass
{
private:
MyClass() {}
~MyClass() {}
public:
static MyClass *Instantiate()
{
MyClass *inst = new MyClass;
return inst;
}
void Delete()
{
delete this;
}
};
int main()
{
MyClass *inst1 = MyClass::Instantiate();
inst1->Delete();
return 0;
}