std::bad_weak_ptr
Определено в заголовке <memory> | ||
|---|---|---|
class bad_weak_ptr; | (с C++11) |
std::bad_weak_ptr — это тип объекта, выбрасываемого в виде исключения конструкторами std::shared_ptr, которые принимают std::weak_ptr в качестве аргумента, когда std::weak_ptr ссылается на уже удалённый объект.
Диаграмма наследования
Члены-функции
| (конструктор) | создаёт новый объект bad_weak_ptr (публичная функция-член) |
| operator= | заменяет объект bad_weak_ptr (публичная функция-член) |
| what | возвращает строку с пояснением (публичная функция-член) |
std::bad_weak_ptr::bad_weak_ptr
bad_weak_ptr() noexcept; | (1) | (с C++11) |
bad_weak_ptr( const bad_weak_ptr& other ) noexcept; | (2) | (с C++11) |
Создаёт новый объект bad_weak_ptr с определённой реализацией null-терминированной строки байтов, доступной через what().
*this и other оба имеют динамический тип std::bad_weak_ptr, тогда std::strcmp(what(), other.what()) == 0. Параметры
| other | - | другой объект исключения для копирования |
std::bad_weak_ptr::operator=
bad_weak_ptr& operator=( const bad_weak_ptr& other ) noexcept; | (с C++11) |
Присваивает содержимое объекта other. Если *this и other оба имеют динамический тип std::bad_weak_ptr, то std::strcmp(what(), other.what()) == 0 после присваивания.
Параметры
| other | - | другой объект исключения для присваивания |
Значение возврата
*this
std::bad_weak_ptr::what
virtual const char* what() const noexcept; | (с C++11) |
Возвращает строку с пояснением.
Параметры
(нет)
Значение возврата
Указатель на null-терминированную строку с пояснительной информацией. Строка подходит для преобразования и отображения в виде std::wstring. Указатель гарантированно остаётся действительным, по крайней мере, до тех пор, пока объект исключения, из которого он получен, не будет уничтожен, или до тех пор, пока не будет вызвана неконстантная функция-член (например, оператор копирующего присваивания) объекта исключения.
Примечания
Реализации разрешается, но не обязательно переопределять what().
Наследуется от std::exception
Члены-функции
|
[виртуальный] | уничтожает объект исключения (виртуальная публичная функция-член std::exception) |
|
[виртуальный] | возвращает строку с пояснением (виртуальная публичная функция-член std::exception) |
Пример
#include <iostream>
#include <memory>
int main()
{
std::shared_ptr<int> p1(new int(42));
std::weak_ptr<int> wp(p1);
p1.reset();
try
{
std::shared_ptr<int> p2(wp);
}
catch (const std::bad_weak_ptr& e)
{
std::cout << e.what() << '\n';
}
}Возможный вывод:
std::bad_weak_ptr
Отчёты об ошибках
Следующие отчёты об ошибках, изменяющие поведение, были применены ретроактивно к ранее опубликованным стандартам C++.
| DR | Применён к | Поведение, как опубликовано | Правильное поведение |
|---|---|---|---|
| LWG 2376 | C++11 | вызов what для bad_weak_ptr, созданного по умолчанию, был обязателен для возврата "bad_weak_ptr" | значение возврата определено реализацией |
См. также
|
(C++11) | интеллектуальный указатель с семантикой совместного владения объектом (шаблон класса) |
|
(C++11) | слабая ссылка на объект, управляемый std::shared_ptr (шаблон класса) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/memory/bad_weak_ptr