reset у std::unique_ptr удаляет текущий объект и может привязать новый. Вызов без аргумента освобождает память и делает указатель пустым.">
Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗cpSpUpRs 352 of 696 menu
◀ ▶

Сброс указателя reset в C++

Метод reset у std::unique_ptr удаляет текущий объект и может привязать новый.

Вызов без аргумента освобождает память и делает указатель пустым. Так явно завершают владение раньше конца области видимости. Запишем класс с сообщением в деструкторе и сбросим указатель до выхода из блока:

#include <iostream> #include <memory> class Beacon { public: ~Beacon() { std::cout << "beacon off\n"; } }; int main() { std::unique_ptr<Beacon> lamp = std::make_unique<Beacon>(); lamp.reset(); std::cout << "after reset\n"; return 0; }

Сделайте класс Flag, печатающий down в деструкторе. Держите его в unique_ptr, вызовите reset и убедитесь, что down появляется до конца main.

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