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

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

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

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

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

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

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

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