Namespaces
Variants

std::experimental:: shared_ptr

From cppreference.net
定义于头文件 <experimental/memory>
template < class T > class shared_ptr ;
(库基础技术规范)

std::experimental::shared_ptr std::shared_ptr 的改进版本,增加了对数组的支持。

目录

成员类型

成员类型 定义
element_type std:: remove_extent_t < T >

成员函数

构造新的 shared_ptr
(公开成员函数)
观察器
返回存储的指针
(公开成员函数)
解引用存储的指针
(公开成员函数)
提供对数组的索引访问
(公开成员函数)

非成员函数

对存储的指针应用 static_cast dynamic_cast const_cast reinterpret_cast 转换
(函数模板)

辅助类

std::experimental::shared_ptr 的哈希支持
(类模板特化)

std:: shared_ptr 相同的成员及非成员函数

成员函数

以下成员函数使用 std::experimental::shared_ptr 而非 std::shared_ptr ,并使用 std::experimental::weak_ptr 而非 std::weak_ptr 。除此之外,行为完全一致。

当没有其他 shared_ptr 链接到该对象时销毁其所拥有的对象
( std::shared_ptr<T> 的公开成员函数)
赋值 shared_ptr
( std::shared_ptr<T> 的公开成员函数)
修改器
替换被管理对象
( std::shared_ptr<T> 的公开成员函数)
交换被管理对象
( std::shared_ptr<T> 的公开成员函数)
观察器
返回指向同一被管理对象的 shared_ptr 对象数量
( std::shared_ptr<T> 的公开成员函数)
(C++20 前)
检查被管理对象是否仅由当前 shared_ptr 对象管理
( std::shared_ptr<T> 的公开成员函数)
检查存储的指针是否非空
( std::shared_ptr<T> 的公开成员函数)
提供基于所有者排序的共享指针
( std::shared_ptr<T> 的公开成员函数)

非成员函数

这些非成员函数声明于 std::experimental 命名空间,且作用于 std::experimental::shared_ptr 而非 std::shared_ptr ,除此之外其行为与对应的C++14函数完全相同。

创建管理新对象的共享指针
(函数模板)
创建使用分配器分配新对象的共享指针
(函数模板)
返回指定类型的删除器(如果存在)
(函数模板)
(C++20中移除) (C++20中移除) (C++20中移除) (C++20中移除) (C++20中移除) (C++20)
与另一个 shared_ptr nullptr 进行比较
(函数模板)
将存储的指针值输出到输出流
(函数模板)
特化 std::swap 算法
(函数模板)
std::shared_ptr 特化的原子操作
(函数模板)

辅助类模板

这些类模板声明于 std::experimental 命名空间中,与 std::experimental::shared_ptr std::experimental::weak_ptr 协同工作,而非与 std::shared_ptr std::weak_ptr 配合,除此之外其行为与对应的C++14类模板完全一致。

(C++11)
提供基于所有者的混合类型 shared_ptr 和 weak_ptr 排序功能
(类模板)
允许对象创建指向自身的 shared_ptr
(类模板)

示例