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