/
spirzen
/
it-code-examples
Обзор
Документация
Войти
/
spirzen
/
it-code-examples
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
examples/cpp/cpp-506-12-002/main.cpp
42 строки
1 KB
Spirzen
Code migration pack
09 июн 2026, 01:41
09 июн 2026, 01:41
cebc284
Код
Авторство
О чём код?
template<typename T> class UniquePtr { T* ptr_; public: explicit UniquePtr(T* p = nullptr) : ptr_(p) {} ~UniquePtr() { delete ptr_; } UniquePtr(const UniquePtr&) = delete; UniquePtr& operator=(const UniquePtr&) = delete; UniquePtr(UniquePtr&& other) noexcept : ptr_(other.ptr_) { other.ptr_ = nullptr; } UniquePtr& operator=(UniquePtr&& other) noexcept { if (this != &other) { delete ptr_; ptr_ = other.ptr_; other.ptr_ = nullptr; } return *this; } // Операторы разыменования T& operator*() const { return *ptr_; } // возвращает lvalue T* operator->() const { return ptr_; } // возвращает указатель // Проверка на "истинность" explicit operator bool() const { return ptr_ != nullptr; } // Отдача владения T* release() noexcept { T* p = ptr_; ptr_ = nullptr; return p; } void reset(T* p = nullptr) noexcept { delete ptr_; ptr_ = p; } };