Страницы

Поиск по вопросам

вторник, 28 января 2020 г.

C++ class в чём разница?

#cpp


В чём различия данных строк? Обе работают. Когда тот или другой случай используется?


Class* obj = new Class();
Class obj;

    


Ответы

Ответ 1



В первом случае Вы создаёте объект в куче. Сами выделяете память, сами должны её удалять оператором delete. Обращение к полям и методам объекта происходит через стрелку ->. Во втором случае объект создаётся в стеке, он будет автоматически уделён по завершению его области видимости. Обращение к объекту происходит через точку . Первый способ позволяет определять любое время жизни объекта, использовать его в разных частях программы. Но это также чревато последствиями, так как программист может забыть удалить объект из памяти. Поэтому без необходимости объект не следует создавать в куче.

Ответ 2



Уточню, что для второго объекта деструктор вызывается автоматически, при выходе потока управления из функции. В принципе, в 90% процентах, можно писать без new-delete.

Комментариев нет:

Отправить комментарий