在下面的代碼中,我使我的構造函數和析構函數保密,並創建了我自己的實例化和刪除函數。但是當我調用Delete()
函數時,它內部的delete this
語句似乎刪除了該對象,但未通知編譯器,因此它認爲該對象仍然存在。我認爲將指針設置爲空或零是一個好主意,所以我在刪除語句之前放置了一個this = 0
,但它根本不起作用。我應該在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;
}
「但不通知編譯器,所以它認爲該對象仍然存在」 - 什麼讓你說這個? – 2013-03-03 17:02:42
@stfrabbit因爲我無法重用對象名稱 – 2013-03-03 17:08:56
請刪除'這個問題可能已經有答案'標籤。我的問題與你提到的問題無關。 – 2013-03-03 17:11:04