使用指向对象的指针进行破坏

rkC*_*olo 3 c++ pointers destructor object delete-operator

如果对象存在,则:

MyClass obj;
Run Code Online (Sandbox Code Playgroud)

要调用成员函数:

obj.myMemberFunction();
Run Code Online (Sandbox Code Playgroud)

然后在满足其目的后调用该对象的析构函数:

delete obj;
Run Code Online (Sandbox Code Playgroud)

但是,假设我有一个指向对象的指针:

MyClass* obj;
Run Code Online (Sandbox Code Playgroud)

要调用成员函数:

obj->myMemberFunction();
Run Code Online (Sandbox Code Playgroud)

现在......如何在此对象上调用析构函数?

Lig*_*ica 6

你已经倒退了; 做delete第二种情况,而不是第一种情况:

MyClass obj;
obj.myMemberFunction();
//delete obj;
//^^^^^^^^^^^
// NO! `obj` has automatic storage and will
// be destroyed automatically when it goes out
// of scope.
Run Code Online (Sandbox Code Playgroud)

delete期望一个指向动态分配对象的指针:

MyClass* obj = new MyClass;
obj->myMemberFunction();
delete obj;
Run Code Online (Sandbox Code Playgroud)