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)
现在......如何在此对象上调用析构函数?
你已经倒退了; 做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)