最佳答案
可能的复制品:
使用 new 和不使用 实例化对象有什么区别
这可能是一个基本的问题,可能已经有人问过了(比如说 给你) ,但我还是不明白。那么,让我来问问。
考虑下面的 C + + 类:
class Obj{
char* str;
public:
Obj(char* s){
str = s;
cout << str;
}
~Obj(){
cout << "Done!\n";
delete str; // See the comment of "Loki Astari" below on why this line of code is bad practice
}
};
以下代码片段之间的区别是什么:
Obj o1 ("Hi\n");
还有
Obj* o2 = new Obj("Hi\n");
为什么前者调用析构函数,而后者不(没有显式调用 delete
) ?
哪一个更好?