Возможный дубликат:
В чем разница между созданием экземпляра объекта с помощью нового vs. without
Это, вероятно, основной вопрос и, возможно, уже был задан (скажем, здесь); но я до сих пор этого не понимаю. Итак, позвольте мне спросить.
Рассмотрим следующий класс С++:
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");
Почему первый вызов деструктора, но последний не имеет (без явного вызова destroy
)?
Какой из них предпочтительнее?