命名空间
变体
操作

std::experimental::static_pointer_cast, std::experimental::dynamic_pointer_cast, std::experimental::const_pointer_cast, std::experimental::reinterpret_pointer_cast

来自 cppreference.com
 
 
实验性
技术规范
文件系统库 (文件系统 TS)
库基础 (库基础 TS)
库基础 2 (库基础 TS v2)
库基础 3 (库基础 TS v3)
并行扩展 (并行 TS)
并行扩展 2 (并行 TS v2)
并发扩展 (并发 TS)
并发扩展 2 (并发 TS v2)
概念 (概念 TS)
范围 (范围 TS)
反射 (反射 TS)
数学特殊函数 (特殊函数 TR)
实验性非 TS
模式匹配
线性代数
std::execution
契约
2D 图形
 
 
std::experimental::shared_ptr
成员函数
非成员函数
experimental::static_pointer_castexperimental::dynamic_pointer_castexperimental::const_pointer_castexperimental::reinterpret_pointer_cast
成员和非成员与 std::shared_ptr 相同
 
template< class T, class U >

std::experimental::shared_ptr<T>

    static_pointer_cast( const std::experimental::shared_ptr<U>& r ) noexcept;
(1) (库基础 TS)
template< class T, class U >

std::experimental::shared_ptr<T>

    dynamic_pointer_cast( const std::experimental::shared_ptr<U>& r ) noexcept;
(2) (库基础 TS)
template< class T, class U >

std::experimental::shared_ptr<T>

    const_pointer_cast( const std::experimental::shared_ptr<U>& r ) noexcept;
(3) (库基础 TS)
template< class T, class U >

std::experimental::shared_ptr<T>

    reinterpret_pointer_cast( const std::experimental::shared_ptr<U>& r ) noexcept;
(4) (库基础 TS)

创建一个新的 std::experimental::shared_ptr 实例,其存储的指针是使用强制转换表达式从 r 的存储指针获得的。如果 r 为空,则新的 shared_ptr 也是空的(但其存储的指针不一定是空指针)。

否则,新的 shared_ptr 将与 r 共享所有权,除非 dynamic_pointer_cast 执行的 dynamic_cast 返回空指针。

Ytypename std::experimental::shared_ptr<T>::element_type,则结果 std::experimental::shared_ptr 的存储指针将通过调用(按顺序)获得

1) static_cast<Y*>(r.get()).
2) dynamic_cast<Y*>(r.get())(如果 dynamic_cast 的结果为空指针值,则返回的 shared_ptr 将为空)。
3) const_cast<Y*>(r.get()).
4) reinterpret_cast<Y*>(r.get()).

除非从 U*T* 的相应强制转换格式正确,否则这些函数的行为是未定义的

1) 除非 static_cast<T*>((U*)nullptr) 格式正确,否则行为是未定义的。
2) 除非 dynamic_cast<T*>((U*)nullptr) 格式正确,否则行为是未定义的。
3) 除非 const_cast<T*>((U*)nullptr) 格式正确,否则行为是未定义的。
4) 除非 reinterpret_cast<T*>((U*)nullptr) 格式正确,否则行为是未定义的。

[编辑] 参数

r - 要转换的指针

[编辑] 示例

[编辑] 另请参阅

构造新的 shared_ptr
(公共成员函数) [编辑]
static_castdynamic_castconst_castreinterpret_cast 应用于存储的指针
(函数模板) [编辑]