/ / Синтаксис побудови об’єкта [дублікат] - c ++, oop

Синтаксис побудови об'єкта [дублікат] - c + +, ооп

Можливі дублікати:
У чому різниця між створенням об’єкта за допомогою new vs without
Створення об'єкта: з `new` або без нього

У чому різниця між цими двома твердженнями

 HttpUtil httpUtil;

і

 HttpUtil *net = new HttpUtil();

Який з них краще використовувати?

Відповіді:

2 для відповіді № 1

Перший оператор створює змінну з назвою httpUtil на "стеку" - це означає, що як тільки функція, що містить цей рядок, закінчується, змінна виходить "за межі обсягу" і звільняється (пам'ять, яку вона використовує, стає вільною для використання для інших матеріалів).

Другий вислів створює змінну в "купі" - це означає, що змінна буде залишатися в пам'яті, доки ви не зателефонуєте delete на цьому. При розподілі змінних у купі потрібно переконатися, що завжди delete це в якийсь момент, інакше ви отримаєте витік пам'яті - тут ви більше не зможете бачити свій *net змінної, але пам'ять все одно виділено.


4 для відповіді № 2

Перший створює автоматичну змінну. Управління пам'яттю відбувається автоматично, розподіл відбувається швидше, оскільки він знаходиться в стеку, шансів на витік пам’яті немає.

Друга версія створює динамічну змінну - ви відповідаєте за очищення пам'яті, і розподіл у купі повільніший.

Завжди віддайте перевагу першому. Якщо вам потрібно використовувати динамічне розподіл (для збереження тривалості життя чи поліморфної поведінки), використовуйте розумні вказівники замість необроблених покажчиків.


1 для відповіді № 3

Перший - це статично створений об'єкт, де вине потрібно турбуватися про його знищення. Пізніше це динамічно створений об'єкт, де вам потрібно подбати про його знищення до завершення програми.

Перший - кращий, коли вам не потрібно турбуватися про управління пам’яттю.