Назад к вопросам
Junior — Middle
93
Каким образом реализуется гарантия уникальности объектов с помощью std::unique_ptr в C++?
Компании, где спрашивали
ГК Адепт
Ответ от нейросети
sobes.tech AI
std::unique_ptr в C++ реализует гарантию уникальности владения объектом через семантику перемещения (move semantics). Это умный указатель, который владеет объектом и гарантирует, что только один unique_ptr в любой момент времени владеет данным ресурсом.
Основные моменты:
- Копирование
unique_ptrзапрещено (конструктор копирования и оператор присваивания удалены), что исключает возможность иметь несколько владельцев. - Перемещение
unique_ptrпереносит владение от одного указателя к другому, оставляя исходный указатель пустым.
Пример:
#include <memory>
std::unique_ptr<int> ptr1 = std::make_unique<int>(42);
// std::unique_ptr<int> ptr2 = ptr1; // Ошибка: копирование запрещено
std::unique_ptr<int> ptr2 = std::move(ptr1); // Владение передано ptr2
if (!ptr1) {
// ptr1 теперь пустой
}
Таким образом, std::unique_ptr обеспечивает уникальность владения объектом, предотвращая утечки памяти и ошибки двойного удаления.