unique_ptr 類別
儲存自有物件的指標。 沒有任何其他 unique_ptr 擁有此物件。 當 unique_ptr 終結時,物件也會終結。
template< class Type, class Del = default_delete<Type> >
class unique_ptr {
public:
unique_ptr( );
unique_ptr( nullptr_t Nptr );
explicit unique_ptr( pointer Ptr );
unique_ptr( pointer Ptr,
typename conditional<is_reference<Del>::value,
Del,
typename add_reference<const Del>::type>::type Deleter);
unique_ptr (pointer Ptr,
typename remove_reference<Del>::type&& Deleter);
unique_ptr (unique_ptr&& Right);
template<class Type2, Class Del2> unique_ptr( unique_ptr<Type2, Del2>&& Right );
unique_ptr( const unique_ptr& Right) = delete;
unique_ptr& operator=(const unique_ptr& Right ) = delete;
};
參數
Right
unique_ptr。Nptr
類型為 std::nullptr_t 的 rvalue。Ptr
pointer。Deleter
繫結至 unique_ptr 的 deleter 函式。
例外狀況
unique_ptr 未產生任何例外狀況。
備註
unique_ptr 類別會取代 auto_ptr,而且可以當做 STL 容器的項目。
使用 make_unique 協助程式函式,有效率地建立 unique_ptr 的新執行個體。
unique_ptr 唯一管理資源。 每個 unique_ptr 物件儲存自有物件的指標或存放 null 指標。 資源可以由不超過一個 unique_ptr 物件擁有;當擁有特定資源的 unique_ptr 物件終結時,會釋放資源。 unique_ptr 物件可移動,但不可複製。如需詳細資訊,請參閱右值參考宣告子:&&。
資源是透過呼叫 Del 類型之預存 deleter 物件釋放 (這個物件知道如何針對特定 unique_ptr 配置資源)。 預設 deleter default_delete<Type> 假設,_Ptr 指向的資源是以 new 配置的,而且可以透過呼叫 delete _Ptr 釋放 (部分特製化 unique_ptr<Type[]> 管理 new[] 配置的陣列物件,而且有預設 deleter default_delete<Type[]>,特製化以呼叫 delete[] _Ptr)。
自有資源的儲存指標 stored_ptr 具有類型 pointer。 如果已定義,則為 Del::pointer,否則為 Type * 。 如果 deleter 是無狀態,預存 deleter 物件 stored_deleter 不會佔用物件的空間。 請注意,Del 可以是參考類型。
成員
建構函式
unique_ptr 有七個建構函式。 |
Typedef
Del 樣板參數的同義字。 |
|
Type 樣板參數的同義字。 |
|
如果已定義,Del::pointer 的同義字,否則為 Type *。 |
成員函式
傳回 stored_ptr。 |
|
傳回 stored_deleter 的參考。 |
|
將 pointer() 儲存在 stored_ptr,並傳回其之前的內容。 |
|
釋放目前擁有的資源並接受新的資源。 |
|
與所提供的 unique_ptr 交換資源和 deleter。 |
運算子
operator bool |
運算子會傳回可以轉換成 bool 的類型值。 如果是 get() != pointer(),轉換為 bool 的結果是 true,否則為 false。 |
operator-> |
成員函式傳回 stored_ptr. |
operator* |
成員函式傳回 *stored_ptr. |
將 unique_ptr (或 pointer-type) 的值指派至目前 unique_ptr。 |
需求
標頭:<memory>
命名空間: std