#cpp
В чём различия данных строк? Обе работают. Когда тот или другой случай используется? Class* obj = new Class(); Class obj;
Ответы
Ответ 1
В первом случае Вы создаёте объект в куче. Сами выделяете память, сами должны её удалять оператором delete. Обращение к полям и методам объекта происходит через стрелку ->. Во втором случае объект создаётся в стеке, он будет автоматически уделён по завершению его области видимости. Обращение к объекту происходит через точку . Первый способ позволяет определять любое время жизни объекта, использовать его в разных частях программы. Но это также чревато последствиями, так как программист может забыть удалить объект из памяти. Поэтому без необходимости объект не следует создавать в куче.Ответ 2
Уточню, что для второго объекта деструктор вызывается автоматически, при выходе потока управления из функции. В принципе, в 90% процентах, можно писать без new-delete.
Комментариев нет:
Отправить комментарий