共用方式為


unique_ptr Class

儲存指標至主控物件。物件是由不具備其他 unique_ptr所擁有。物件,在終結時,終結 unique_ptr

template<class Type, class Del = default_delete<Type> >
    class unique_ptr {

public:
        typedef Type element_type;
        typedef Del deleter_type;
        typedef T1 pointer;

        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 ();

    unique_ptr& operator= (
        unique_ptr&& _Right
    );
    template<class Type2, Class Del2>
        unique_ptr& operator= (
            unique_ptr<Type2, Del2>&& _Right
        );
    void swap (
        unique_ptr& _Right
    );
    pointer release ();
    void reset (
       pointer _Ptr = pointer()
    );

    pointer get () const;
    Type& operator* () const;
    pointer operator-> () const;
    Del& get_deleter ();
    const Del& get_deleter () const;
    explicit operator bool () const;

    unique_ptr(
        const unique_ptr& _Right
) = delete;
    unique_ptr& operator=(
        const unique_ptr& _Right
) = delete;

private:
    pointer stored_ptr;    // exposition only
    Del stored_deleter;    // exposition only
    };

參數

  • _Right
    unique_ptr

  • _Nptr
    型別為 std::nullptr_t 的 rvalue。

  • _Ptr
    pointer

  • _Deleter
    繫結至 unique_ptrdeleter 函式。

例外狀況

例外狀況不是由 unique_ptr產生的。

備註

unique_ptr 類別會取代 auto_ptr,而且可以當做 STL 容器的項目。

unique_ptr 唯一處理資源。每個 unique_ptr 物件的指標它擁有或存放 null 指標的物件。資源可以由不超過一個 unique_ptr 物件擁有;當擁有特定資源時終結的 unique_ptr 物件,資源被釋放。unique_ptr 物件不能移動,不過,複製;如需詳細資訊,請參閱 右值參考的宣告子: & &

資源是透過呼叫知道型別 Del 之已儲存的 deleter 物件釋放資源如何針對特定 unique_ptr配置。預設為 deleterdefault_delete<Type> 假設,資源指向 _Ptr 配置與,則為 new,而且可以透過呼叫 delete _釋放Ptr。(部分特製化 **unique_ptr<Type[]>**處理陣列物件配置的 new[],且預設 deleterdefault_delete<Type[]>,特殊呼叫 delete[] _Ptr)。

對資源, stored_ptr 儲存的指標具有型別 pointer。如果已定義為 Del::pointer 和 Type *。儲存 deleter 物件的 stored_deleter 不會佔用物件的空間 deleter 是否沒有狀態。請注意 Del 可以是參考型別。

Members

Ee410601.collapse_all(zh-tw,VS.110).gif建構函式

unique_ptr::unique_ptr

取得 unique_ptr的七個建構函式。

Ee410601.collapse_all(zh-tw,VS.110).gifTypedef

deleter_type

樣板參數 Del的同義字。

element_type

範本參數的 Type.同義資料表。

指標

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

Ee410601.collapse_all(zh-tw,VS.110).gif成員函式

unique_ptr::get

傳回 stored_ptr。

unique_ptr::get_deleter

傳回 stored_deleter的參考。

unique_ptr::release

指定儲存在 stored_ptrpointer() 並傳回其之前的內容。

unique_ptr::reset

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

unique_ptr::swap

交換資源和 deleterunique_ptr

Ee410601.collapse_all(zh-tw,VS.110).gif運算子

operator bool

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

operator->

成員函式會傳回 stored_ptr.

operator*

成員函式 returns*stored_ptr.

unique_ptr operator=

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

需求

標題: <memory>

命名空間: 可以

請參閱

參考

<memory>

其他資源

unique_ptr 成員