Каков жизненный цикл объекта C ++?

Я опытный разработчик C, который только сейчас входит в C ++, и я должен признаться, я очень озадачен тем, как много способов создать, сохранить и уничтожить объекты C ++. В Си жизнь проста: назначение с= копии в стеке иmalloc/free управлять данными в куче. C ++ далек от этого, или мне так кажется.

В свете этого вот мои вопросы:

Чтовсе способы создания объекта C ++? Прямой / копировать конструктор, присваивание и т. Д. Как они работают?Каковы все различные синтаксисы инициализации, связанные со всеми этими типами создания объектов? какая разница междуT f = x, T f(x);, T f{x};, и т.д.?Самое главное,когда правильно ли копировать / назначать / что угодно= находится в C ++, и когда вы хотите использовать указатели? В Си я очень привык бросать указатели вокругмногопотому что назначение указателя дешево, но копирование структуры менее. Как семантика копирования C ++ влияет на это?Наконец, каковы все эти вещи, какshared_ptr, weak_ptr, и т.д.?

Я извиняюсь, если это довольно широкий вопрос, но я очень озадачен тем, когда что использовать (даже не говоря о моей путанице по поводу управления памятью в коллекциях иnew оператор), и я чувствую, что все, что я знал об управлении памятью C, ломается в C ++. Это правда или моя ментальная модель ошибочна?

Подводя итог: как создаются, инициализируются и уничтожаются объекты C ++ и когда мне следует использовать каждый метод?

Ответы на вопрос(3)

Ваш ответ на вопрос