MSTL 1.4.0
A Modern C++ Library with extended functionality, web components, and utility libraries
载入中...
搜索中...
未找到
weak_ptr< T > 模板类 参考

弱智能指针类模板 更多...

#include <weak_ptr.hpp>

Public 类型

using element_type = T
 元素类型

Public 成员函数

 weak_ptr (nullptr_t np=nullptr) noexcept
 默认构造函数
template<typename U, enable_if_t< is_convertible_v< U *, T * >, int > = 0>
 weak_ptr (const shared_ptr< U > &sp) noexcept
 共享智能指针构造函数
 weak_ptr (const weak_ptr &wp) noexcept
 拷贝构造函数
template<typename U, enable_if_t< is_convertible_v< U *, T * >, int > = 0>
 weak_ptr (const weak_ptr< U > &wp) noexcept
 类型转换拷贝构造函数
 weak_ptr (weak_ptr &&wp) noexcept
 移动构造函数
template<typename U, enable_if_t< is_convertible_v< U *, T * >, int > = 0>
 weak_ptr (weak_ptr< U > &&wp) noexcept
 类型转换移动构造函数
 ~weak_ptr ()
 析构函数
weak_ptroperator= (const weak_ptr &wp) noexcept
 拷贝赋值运算符
template<typename U, enable_if_t< is_convertible_v< U *, T * >, int > = 0>
weak_ptroperator= (const weak_ptr< U > &wp) noexcept
 类型转换拷贝赋值运算符
template<typename U, enable_if_t< is_convertible_v< U *, T * >, int > = 0>
weak_ptroperator= (const shared_ptr< U > &sp) noexcept
 共享智能指针赋值运算符
weak_ptroperator= (weak_ptr &&wp) noexcept
 移动赋值运算符
template<typename U, enable_if_t< is_convertible_v< U *, T * >, int > = 0>
weak_ptroperator= (weak_ptr< U > &&wp) noexcept
 类型转换移动赋值运算符
void reset () noexcept
 重置弱指针
void swap (weak_ptr &wp) noexcept
 交换两个弱指针
MSTL_NODISCARD long use_count () const noexcept
 获取观察对象的引用计数
MSTL_NODISCARD bool expired () const noexcept
 检查观察的对象是否已被销毁
MSTL_NODISCARD shared_ptr< T > lock () const noexcept
 尝试获取共享智能指针
template<typename U>
MSTL_NODISCARD bool owner_equal (const weak_ptr< U > &rhs) const noexcept
 检查所有权是否相等
template<typename U>
MSTL_NODISCARD bool owner_equal (const shared_ptr< U > &rhs) const noexcept
 与共享指针检查所有权是否相等
template<typename U>
MSTL_NODISCARD bool owner_before (const weak_ptr< U > &rhs) const noexcept
 比较所有权顺序
template<typename U>
MSTL_NODISCARD bool owner_before (const shared_ptr< U > &rhs) const noexcept
 与共享指针比较所有权顺序

详细描述

template<typename T>
class weak_ptr< T >

弱智能指针类模板

模板参数
T对象类型

弱智能指针用于观察由共享智能指针管理的对象,但不拥有对象的所有权。 不会增加对象的引用计数,因此不会阻止对象被销毁。

在文件 weak_ptr.hpp30 行定义.

构造及析构函数说明

◆ weak_ptr() [1/6]

template<typename T>
weak_ptr< T >::weak_ptr ( nullptr_t np = nullptr)
inlinenoexcept

默认构造函数

参数
np空指针字面量

创建空的弱指针,不观察任何对象。

在文件 weak_ptr.hpp51 行定义.

◆ weak_ptr() [2/6]

template<typename T>
template<typename U, enable_if_t< is_convertible_v< U *, T * >, int > = 0>
weak_ptr< T >::weak_ptr ( const shared_ptr< U > & sp)
inlinenoexcept

共享智能指针构造函数

模板参数
U可转换为T*的类型
参数
sp共享指针

创建观察sp管理的对象的弱指针。

在文件 weak_ptr.hpp61 行定义.

引用了 _INNER.

◆ weak_ptr() [3/6]

template<typename T>
weak_ptr< T >::weak_ptr ( const weak_ptr< T > & wp)
inlinenoexcept

拷贝构造函数

参数
wp要拷贝的弱指针

在文件 weak_ptr.hpp72 行定义.

◆ weak_ptr() [4/6]

template<typename T>
template<typename U, enable_if_t< is_convertible_v< U *, T * >, int > = 0>
weak_ptr< T >::weak_ptr ( const weak_ptr< U > & wp)
inlinenoexcept

类型转换拷贝构造函数

模板参数
U可转换为T*的类型
参数
wp要拷贝的弱指针

在文件 weak_ptr.hpp85 行定义.

◆ weak_ptr() [5/6]

template<typename T>
weak_ptr< T >::weak_ptr ( weak_ptr< T > && wp)
inlinenoexcept

移动构造函数

参数
wp要移动的弱指针

在文件 weak_ptr.hpp96 行定义.

◆ weak_ptr() [6/6]

template<typename T>
template<typename U, enable_if_t< is_convertible_v< U *, T * >, int > = 0>
weak_ptr< T >::weak_ptr ( weak_ptr< U > && wp)
inlinenoexcept

类型转换移动构造函数

模板参数
U可转换为T*的类型
参数
wp要移动的弱指针

在文件 weak_ptr.hpp108 行定义.

◆ ~weak_ptr()

template<typename T>
weak_ptr< T >::~weak_ptr ( )
inline

析构函数

注解
减少弱引用计数,当弱引用计数为0时删除控制块

在文件 weak_ptr.hpp118 行定义.

引用了 reset().

成员函数说明

◆ expired()

template<typename T>
MSTL_NODISCARD bool weak_ptr< T >::expired ( ) const
inlinenoexcept

检查观察的对象是否已被销毁

返回
对象是否已被销毁

在文件 weak_ptr.hpp232 行定义.

引用了 use_count().

◆ lock()

template<typename T>
MSTL_NODISCARD shared_ptr< T > weak_ptr< T >::lock ( ) const
inlinenoexcept

尝试获取共享智能指针

返回
如果对象仍然存在,返回共享智能指针;否则返回空共享智能指针

如果观察的对象仍然存在,则创建一个新的共享智能指针。

在文件 weak_ptr.hpp242 行定义.

◆ operator=() [1/5]

template<typename T>
template<typename U, enable_if_t< is_convertible_v< U *, T * >, int > = 0>
weak_ptr & weak_ptr< T >::operator= ( const shared_ptr< U > & sp)
inlinenoexcept

共享智能指针赋值运算符

模板参数
U可转换为T*的类型
参数
sp共享指针
返回
当前弱指针的引用

在文件 weak_ptr.hpp158 行定义.

引用了 _INNER.

◆ operator=() [2/5]

template<typename T>
weak_ptr & weak_ptr< T >::operator= ( const weak_ptr< T > & wp)
inlinenoexcept

拷贝赋值运算符

参数
wp要拷贝的弱指针
返回
当前弱指针的引用

在文件 weak_ptr.hpp127 行定义.

引用了 _MSTL , 以及 addressof().

◆ operator=() [3/5]

template<typename T>
template<typename U, enable_if_t< is_convertible_v< U *, T * >, int > = 0>
weak_ptr & weak_ptr< T >::operator= ( const weak_ptr< U > & wp)
inlinenoexcept

类型转换拷贝赋值运算符

模板参数
U可转换为T*的类型
参数
wp要拷贝的弱指针
返回
当前弱指针的引用

在文件 weak_ptr.hpp143 行定义.

◆ operator=() [4/5]

template<typename T>
weak_ptr & weak_ptr< T >::operator= ( weak_ptr< T > && wp)
inlinenoexcept

移动赋值运算符

参数
wp要移动的弱指针
返回
当前弱指针的引用

在文件 weak_ptr.hpp171 行定义.

引用了 _MSTL , 以及 addressof().

◆ operator=() [5/5]

template<typename T>
template<typename U, enable_if_t< is_convertible_v< U *, T * >, int > = 0>
weak_ptr & weak_ptr< T >::operator= ( weak_ptr< U > && wp)
inlinenoexcept

类型转换移动赋值运算符

模板参数
U可转换为T*的类型
参数
wp要移动的弱指针
返回
当前弱指针的引用

在文件 weak_ptr.hpp188 行定义.

◆ owner_before() [1/2]

template<typename T>
template<typename U>
MSTL_NODISCARD bool weak_ptr< T >::owner_before ( const shared_ptr< U > & rhs) const
inlinenoexcept

与共享指针比较所有权顺序

模板参数
U比较的共享指针类型
参数
rhs要比较的共享指针
返回
当前控制块地址是否小于rhs的控制块地址

在文件 weak_ptr.hpp289 行定义.

◆ owner_before() [2/2]

template<typename T>
template<typename U>
MSTL_NODISCARD bool weak_ptr< T >::owner_before ( const weak_ptr< U > & rhs) const
inlinenoexcept

比较所有权顺序

模板参数
U比较的弱指针类型
参数
rhs要比较的弱指针
返回
当前控制块地址是否小于rhs的控制块地址

在文件 weak_ptr.hpp278 行定义.

◆ owner_equal() [1/2]

template<typename T>
template<typename U>
MSTL_NODISCARD bool weak_ptr< T >::owner_equal ( const shared_ptr< U > & rhs) const
inlinenoexcept

与共享指针检查所有权是否相等

模板参数
U比较的共享指针类型
参数
rhs要比较的共享指针
返回
是否共享同一控制块

在文件 weak_ptr.hpp267 行定义.

引用了 _INNER.

◆ owner_equal() [2/2]

template<typename T>
template<typename U>
MSTL_NODISCARD bool weak_ptr< T >::owner_equal ( const weak_ptr< U > & rhs) const
inlinenoexcept

检查所有权是否相等

模板参数
U比较的弱指针类型
参数
rhs要比较的弱指针
返回
是否共享同一控制块

在文件 weak_ptr.hpp256 行定义.

◆ reset()

template<typename T>
void weak_ptr< T >::reset ( )
inlinenoexcept

重置弱指针

使弱指针不再观察任何对象,减少弱引用计数。

在文件 weak_ptr.hpp202 行定义.

被这些函数引用 ~weak_ptr().

◆ swap()

template<typename T>
void weak_ptr< T >::swap ( weak_ptr< T > & wp)
inlinenoexcept

交换两个弱指针

参数
wp要交换的弱指针

在文件 weak_ptr.hpp214 行定义.

引用了 _MSTL, addressof() , 以及 swap().

◆ use_count()

template<typename T>
MSTL_NODISCARD long weak_ptr< T >::use_count ( ) const
inlinenoexcept

获取观察对象的引用计数

返回
强引用计数值

在文件 weak_ptr.hpp224 行定义.

被这些函数引用 expired().


该类的文档由以下文件生成: