Condividi tramite


Classe unique_ptr

Archivia un puntatore a un oggetto di proprietà. L'oggetto non è di proprietà di alcun altro unique_ptr. L'oggetto viene eliminato quando viene eliminato 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;
};

Parametri

  • Right
    Oggetto unique_ptr.

  • Nptr
    Oggetto rvalue di tipo std::nullptr_t.

  • Ptr
    Oggetto pointer.

  • Deleter
    Funzione di deleter associata a un unique_ptr.

Eccezioni

Non viene generata alcuna eccezione da unique_ptr.

Note

La classe unique_ptr sostituisce auto_ptr e può essere utilizzata come elemento dei contenitori STL.

Utilizzare la funzione di supporto make_unique per creare in modo efficiente nuove istanze di unique_ptr.

unique_ptr gestisce una risorsa in modo univoco. Ogni oggetto unique_ptr archivia un puntatore nell'oggetto di sua proprietà oppure archivia un puntatore Null. Una risorsa può appartenere a non più di un oggetto unique_ptr; quando un oggetto unique_ptr proprietario di una risorsa particolare viene eliminato, la risorsa viene liberata. Un oggetto unique_ptr può essere spostato, ma non copiato; per ulteriori informazioni, vedere Dichiaratore di riferimento rvalue: &&.

La risorsa viene liberata chiamando un oggetto deleter archiviato di tipo Del in grado di allocare le risorse per un determinato unique_ptr. Per impostazione predefinita, deleter default_delete<Type> presuppone che la risorsa a cui punta _Ptr venga allocata con new e che possa essere liberata chiamando delete _Ptr. Una specializzazione parziale **unique_ptr<Type[]>**gestisce gli oggetti matrice allocati con new[] e ha il valore predefinito deleter default_delete<Type[]>, specializzato per chiamare delete []. _Ptr.

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

Membri

Costruttori

unique_ptr::unique_ptr

Esistono sette costruttori per unique_ptr.

Definizioni typedef

deleter_type

Sinonimo del parametro di modello Del.

element_type

Sinonimo del parametro di modello Type.

puntatore

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

Funzioni membro

unique_ptr::get

Restituisce stored_ptr.

unique_ptr::get_deleter

Restituisce un riferimento a stored_deleter.

unique_ptr::release

archivia pointer() in stored_ptr e restituisce il relativo contenuto precedente.

unique_ptr::reset

Elimina la risorsa attualmente di proprietà e accetta una nuova risorsa.

unique_ptr::swap

Scambia la risorsa e deleter con l'unique_ptr fornito.

Operatori

operator bool

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

operator->

La funzione membro restituisce stored_ptr.

operator*

La funzione membro restituisce*stored_ptr.

unique_ptr operator=

Assegna il valore di un unique_ptr (o un pointer-type) allo unique_ptr corrente.

Requisiti

Intestazione: <memory>

Spazio dei nomi: std

Vedere anche

Riferimenti

<memory>

Altre risorse

membri di unique_ptr