Condividi tramite


unique_ptr Class

Include un puntatore a un oggetto di proprietà.L'oggetto è di proprietà da nessun altro unique_ptr.L'oggetto viene eliminato quando unique_ptr viene eliminato.

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
    };

Parametri

  • _Right
    Oggetto unique_ptr.

  • _Nptr
    Oggetto rvalue di tipo std::nullptr_t.

  • _Ptr
    Oggetto pointer.

  • _Deleter
    Una funzione di deleter associata a unique_ptr.

Eccezioni

Non viene generata alcuna eccezione da unique_ptr.

Note

La classe di unique_ptr sostituisce auto_ptre può essere utilizzata come elemento di contenitori STL.

unique_ptr in modo univoco gestisce una risorsa.Ogni oggetto di unique_ptr include un puntatore all'oggetto che possiede o include un puntatore null.Una risorsa può essere posseduta da non più di un oggetto di unique_ptr ; quando un oggetto di unique_ptr proprietario di una risorsa particolare viene eliminato, la risorsa viene liberata.Un oggetto di unique_ptr non può essere spostato, ma essere copiato, per ulteriori informazioni, vedere Dichiarazione di riferimento Rvalue: &&.

La risorsa viene liberata chiamando un oggetto archiviato di deleter di tipo Del che contiene le risorse vengono allocate per unique_ptrparticolare.deleter predefinito default_delete<Type> presuppone che la risorsa indicata da _Ptr sia stata allocata con newe che può essere liberata chiamando delete _Ptr.(Specializzazione parziale **unique_ptr<Type[]>**A gestisce gli oggetti allocati matrice con new[]e ha deleter predefinito default_delete<Type[]>, specializzato per chiamare il metodo delete [] _Ptr).

Il puntatore archiviato in una risorsa personalizzata, stored_ptr è di tipo pointer.È Del::pointer se definito e Type *caso contrario.L'oggetto memorizzato stored_deleter di deleter non occupa spazio nell'oggetto se deleter è indipendente dallo stato.Si noti che Del può essere un tipo di riferimento.

Membri

Ee410601.collapse_all(it-it,VS.110).gifCostruttori

unique_ptr::unique_ptr

Esistono sette costruttori per unique_ptr.

Ee410601.collapse_all(it-it,VS.110).gifDefinizioni typedef

deleter_type

Sinonimo del parametro di template Del.

element_type

Sinonimo del parametro di template Type.

puntatore

Sinonimo di Del::pointer se definito, in caso contrario Type *.

Ee410601.collapse_all(it-it,VS.110).gifFunzioni membro

unique_ptr::get

Restituisca il valore stored_ptr.

unique_ptr::get_deleter

Restituisce un riferimento a stored_deleter.

unique_ptr::release

archivia pointer() in stored_ptr e restituisce il contenuto precedenti.

unique_ptr::reset

Elimina la risorsa attualmente personalizzata e accetta una nuova risorsa.

unique_ptr::swap

Risorsa e deleter di scambi con unique_ptrfornito.

Ee410601.collapse_all(it-it,VS.110).gifOperatori

operator bool

L'operatore restituisce un valore di tipo che è convertibile in bool.Il risultato della conversione a bool è true quando get() != pointer()in caso contrario, false.

operator->

La funzione membro restituisce stored_ptr.

operator*

Il returns*stored_ptr.di funzione membro

unique_ptr operator=

Assegna il valore di unique_ptro di pointer-type) a unique_ptrcorrente.

Requisiti

Intestazione: <memory>

Spazio dei nomi: deviazione standard

Vedere anche

Riferimenti

<memory>

Altre risorse

membri di unique_ptr