共用方式為


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_ptrdeleter 函式。

例外狀況

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::unique_ptr

unique_ptr 有七個建構函式。

Typedef

deleter_type

Del 樣板參數的同義字。

element_type

Type 樣板參數的同義字。

指標

如果已定義,Del::pointer 的同義字,否則為 Type *。

成員函式

unique_ptr::get

傳回 stored_ptr。

unique_ptr::get_deleter

傳回 stored_deleter 的參考。

unique_ptr::release

將 pointer() 儲存在 stored_ptr,並傳回其之前的內容。

unique_ptr::reset

釋放目前擁有的資源並接受新的資源。

unique_ptr::swap

與所提供的 unique_ptr 交換資源和 deleter

運算子

operator bool

運算子會傳回可以轉換成 bool 的類型值。 如果是 get() != pointer(),轉換為 bool 的結果是 true,否則為 false。

operator->

成員函式傳回 stored_ptr.

operator*

成員函式傳回 *stored_ptr.

unique_ptr operator=

unique_ptr (或 pointer-type) 的值指派至目前 unique_ptr

需求

標頭:<memory>

命名空間: std

請參閱

參考

<memory>

其他資源

unique_ptr 成員