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
Costruttori
Esistono sette costruttori per unique_ptr. |
Definizioni typedef
Sinonimo del parametro di template Del. |
|
Sinonimo del parametro di template Type. |
|
Sinonimo di Del::pointer se definito, in caso contrario Type *. |
Funzioni membro
Restituisca il valore stored_ptr. |
|
Restituisce un riferimento a stored_deleter. |
|
archivia pointer() in stored_ptr e restituisce il contenuto precedenti. |
|
Elimina la risorsa attualmente personalizzata e accetta una nuova risorsa. |
|
Risorsa e deleter di scambi con unique_ptrfornito. |
Operatori
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 |
Assegna il valore di unique_ptro di pointer-type) a unique_ptrcorrente. |
Requisiti
Intestazione: <memory>
Spazio dei nomi: deviazione standard