Пространства имён
Варианты
Действия

std::weak_ptr

Материал из cppreference.com
< cpp‎ | memory
 
 
 
 
std::weak_ptr
Функции-члены
Модификаторы
Наблюдатели
Функции, не являющиеся членами
 
Defined in header <memory>
template< class T > class weak_ptr;
(начиная с C++11)


std::weak_ptr – умный указатель, который содержит "слабую" ссылку на объект, управляемый указателем std::shared_ptr. Чтобы получить доступ к управляемому объекту, указатель необходимо привести к типу std::shared_ptr, .

std::weak_ptr моделирует временное владение: когда объект должен быть доступен только если он существует и может быть удален в любой момент кем-то другим, std::weak_ptr используется для отслеживания объекта, и преобразуется в std::shared_ptr для принятия временного владения. Если исходный std::shared_ptr будет уничтожен в процессе работы, время жизни объекта продлевается до того момента, пока не будет разрушен временный std::shared_ptr.

Помимо этого, std::weak_ptr используется для устранения циклических ссылок std::shared_ptr.

Содержание

[править] Типы-члены

Тип члена Определение
element_type T

[править] Функции-члены

создает новый weak_ptr
Оригинал:
creates a new weak_ptr
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

(public функция-член) [править]
разрушает weak_ptr
Оригинал:
destroys a weak_ptr
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

(public функция-член) [править]
назначает weak_ptr
Оригинал:
assigns the weak_ptr
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

(public функция-член) [править]
Модификаторы
прекращает владение управляемым объектом
(public функция-член) [править]
обменивается управляемыми объектами
(public функция-член) [править]
Наблюдатели
возвращает количество shared_ptr объектов, которые управляют объектом
Оригинал:
returns the number of shared_ptr objects that manage the object
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

(public функция-член) [править]
проверяет, был ли удален объект, на который ссылается weak_ptr
(public функция-член) [править]
создает shared_ptr, который управляет объектом, на который ссылается weak_ptr
(public функция-член) [править]
предоставляет владельцу на основе упорядочения слабые указатели
Оригинал:
provides owner-based ordering of weak pointers
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

(public функция-член) [править]

[править] Функции, не являющиеся членами

Специализация алгоритма std::swap
(шаблон функции) [править]

[править] Пример

Демонстрирует использование блокировки для проверки действительности указателя

#include <iostream>
#include <memory>
 
std::weak_ptr<int> gw;
 
void f()
{
    if (auto spt = gw.lock()) { // необходимо скопировать в shared_ptr перед использованием
        std::cout << *spt << "\n";
    } else {
        std::cout << "gw is expired\n";
    }
}
 
int main()
{
    {
        auto sp = std::make_shared<int>(42);
        gw = sp;
 
        f();
    }
 
    f();
}

Вывод:

42
gw is expired