use*_*008 0 c++ function object delete-operator
哪个代码好(如果好的话)
void DeleteObject(Object* obj)
{
delete obj;
}
Run Code Online (Sandbox Code Playgroud)
要么
void DeleteObject(Object** obj)
{
delete *obj;
}
int main()
{
Object *obj = new Object();
DeleteObject(&obj); or DeleteObject(obj);
}
Run Code Online (Sandbox Code Playgroud)
实际上DeleteObject功能不是那么短(它删除了对象字段).
这很好:
#include <memory>
int main(int argc, char **argv) {
std::auto_ptr<Object> ptr = new Object();
}
Run Code Online (Sandbox Code Playgroud)
在我看来也不是.
创建对象的人应该对该对象负责,从而将其删除.
所以我的答案是main应该这样做delete.