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
Esistono sette costruttori per unique_ptr. |
Definizioni typedef
Sinonimo del parametro di modello Del. |
|
Sinonimo del parametro di modello Type. |
|
Sinonimo di Del::pointer se definito, in caso contrario, Type *. |
Funzioni membro
Restituisce stored_ptr. |
|
Restituisce un riferimento a stored_deleter. |
|
archivia pointer() in stored_ptr e restituisce il relativo contenuto precedente. |
|
Elimina la risorsa attualmente di proprietà e accetta una nuova risorsa. |
|
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. |
Assegna il valore di un unique_ptr (o un pointer-type) allo unique_ptr corrente. |
Requisiti
Intestazione: <memory>
Spazio dei nomi: std