Умные указатели
unique_ptr и shared_ptr: владение, записанное в типе
После урока ты сможешь
- Создавать объекты через std::make_unique
- Понимать уникальное и разделяемое владение
- Выбирать: значение, unique_ptr, shared_ptr или ссылка
Шаг 1 из 6
Кто владеет объектом
Обычно объекты живут в переменных и контейнерах, и про память думать не нужно. Но иногда объект должен жить в динамической памяти (куче):
- размер или тип объекта известен только во время работы программы;
- объект очень большой;
- нужен полиморфизм:
vectorразных фигур через общий интерфейс (следующие уроки); - структура ссылается сама на себя: дерево, связный список.
Раньше для этого писали new/delete и молились, что delete вызовется ровно один раз. Современный ответ — умные указатели: RAII-объекты, которые владеют объектом в куче и удаляют его в своём деструкторе.