std::experimental::static_pointer_cast, std::experimental::dynamic_pointer_cast, std::experimental::const_pointer_cast, std::experimental::reinterpret_pointer_cast
來自 cppreference.com
< cpp | experimental | shared_ptr
template< class T, class U > std::experimental::shared_ptr<T> |
(1) | (庫基礎 TS) |
template< class T, class U > std::experimental::shared_ptr<T> |
(2) | (庫基礎 TS) |
template< class T, class U > std::experimental::shared_ptr<T> |
(3) | (庫基礎 TS) |
template< class T, class U > std::experimental::shared_ptr<T> |
(4) | (庫基礎 TS) |
建立一個 std::experimental::shared_ptr 的新例項,其儲存的指標是透過使用一個轉換表示式從 r 的儲存指標獲得的。如果 r 為空,則新的 shared_ptr
也為空(但其儲存的指標不一定為 null)。
否則,新的 shared_ptr
將與 r 共享所有權,除非 dynamic_pointer_cast
執行的 dynamic_cast
返回空指標,則新的 shared_ptr
為空。
令 Y
為 typename 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 (public member function) | |
將 static_cast、dynamic_cast、const_cast 或 reinterpret_cast 應用於儲存的指標 (function template) |