Sobes.tech
Назад к вопросам
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 обеспечивает уникальность владения объектом, предотвращая утечки памяти и ошибки двойного удаления.