Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗cpOpSpTr 131 of 150 menu
◀ ▶

Передача владения unique_ptr в C++

Второй unique_ptr на тот же объект скопировать нельзя: владение должно быть единственным.

Передача владения делается функцией move из utility: она превращает источник в пустой указатель, а получатель забирает объект. После присваивания старый владелец больше не удаляет ресурс. Запишем класс Token:

#include <iostream> #include <memory> #include <utility> class Token { public: int id; Token(int id) : id(id) {} };

Создадим два unique_ptr, перенесем объект и выведем, что источник обнулился:

int main() { std::unique_ptr<Token> first = std::make_unique<Token>(7); std::unique_ptr<Token> second = std::move(first); std::cout << second->id << "\n"; std::cout << (first.get() == nullptr) << "\n"; return 0; }

Сделайте класс Badge с полем code. Создайте два указателя unique_ptr, передайте объект из первого во второй через std::move и выведите 1, если первый стал пустым.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить