РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
651 of 815 menu

Метод expired

Метод expired класса weak_ptr проверяет, был ли удален объект, на который ссылается данный weak_ptr. Метод не принимает параметров и возвращает true, если объект уже удален, и false, если объект еще существует. Метод удобно использовать перед вызовом метода lock, чтобы убедиться, что объект еще доступен.

Синтаксис

weak_ptr.expired()

Пример

Давайте создадим shared_ptr и связанный с ним weak_ptr, а затем проверим с помощью метода expired, существует ли еще объект:

#include <iostream> #include <memory> using namespace std; int main() { shared_ptr<int> sp = make_shared<int>(42); weak_ptr<int> wp = sp; cout << wp.expired() << endl; sp.reset(); cout << wp.expired() << endl; return 0; }

Результат выполнения кода:

0 1

Пример

Давайте проверим состояние weak_ptr перед вызовом метода lock, чтобы безопасно получить доступ к объекту:

#include <iostream> #include <memory> using namespace std; int main() { shared_ptr<int> sp = make_shared<int>(10); weak_ptr<int> wp = sp; if (!wp.expired()) { shared_ptr<int> locked = wp.lock(); cout << *locked << endl; } else { cout << "expired" << endl; } sp.reset(); if (!wp.expired()) { shared_ptr<int> locked = wp.lock(); cout << *locked << endl; } else { cout << "expired" << endl; } return 0; }

Результат выполнения кода:

10 "expired"

Смотрите также

  • класс weak_ptr,
    который представляет слабую ссылку на объект
  • метод lock,
    который создает shared_ptr из weak_ptr
  • метод expired,
    который проверяет, был ли удален объект
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить