unique_ptr-Klasse
Es wird ein Zeiger auf ein Objekt in Besitz gespeichert. Das Objekt ist nicht im Besitz eines anderen unique_ptr-Elements. Das Objekt wird nicht beschädigt, wenn unique_ptr beschädigt wird.
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;
};
Parameter
Right
Ein unique_ptrNptr
Ein rvalue vom Typ std::nullptr_t.Ptr
Ein pointerDeleter
Eine deleter-Funktion, die an unique_ptr gebunden ist.
Ausnahmen
Es werden keine Ausnahmen von unique_ptr generiert.
Hinweise
Die unique_ptr-Klasse löst auto_ptr ab und kann als Element in STL-Containern verwendet werden.
Verwenden Sie die make_unique-Hilfsfunktion, um neue Instanzen von unique_ptr effizient zu erstellen.
unique_ptr verwaltet eine Ressource eindeutig. Jedes unique_ptr-Objekt speichert einen Zeiger auf das Objekt, das es besitzt, oder speichert einen NULL-Zeiger. Es kann höchstens ein unique_ptr-Objekt eine Ressource besitzen. Wird ein unique_ptr-Objekt, das eine bestimmte Ressource besitzt, beschädigt, wird die Ressource freigegeben. Ein unique_ptr-Objekt kann verschoben, jedoch nicht kopiert werden. Weitere Informationen finden Sie unter Rvalue-Verweisdeklarator: &&.
Die Ressource wird freigegeben, indem ein gespeichertes deleter-Objekt vom Typ Del aufgerufen wird, dem bekannt ist, wie Ressourcen für ein bestimmtes unique_ptr-Objekt zugeordnet werden. Der standardmäßige deleter default_delete<Type> geht davon aus, dass die Ressource, auf die _Ptr zeigt, new zugeordnet wird und dass sie freigegeben werden kann, indem delete _Ptr aufgerufen wird. (Eine partielle unique_ptr<Type[]>-Spezialisierung verwaltet Arrayobjekte, die new[] zugeordnet sind, und verfügt über den Standardwert deleter default_delete<Type[]>, der auf den Aufruf von delete[] _Ptr spezialisiert ist.)
Der gespeicherte Zeiger auf eine zugehörige Ressource stored_ptr ist vom Typ pointer. Er lautet Del::pointer, wenn er definiert ist, und Type * , wenn er nicht definiert ist. Das gespeicherte deleter-Objekt stored_deleter belegt keinen Speicherplatz im Objekt, wenn deleter zustandslos ist. Beachten Sie, dass Del ein Verweistyp sein kann.
Member
Konstruktoren
Es gibt sieben Konstruktoren für unique_ptr. |
Typedefs
Ein Synonym für den Vorlagenparameter Del. |
|
Ein Synonym für den Vorlagenparameter Type. |
|
Ein Synonym für Del::pointer, wenn der Wert definiert ist; andernfalls Type *. |
Memberfunktionen
Gibt stored_ptr zurück. |
|
Gibt einen Verweis auf stored_deleter zurück. |
|
speichert pointer() in stored_ptr und gibt seinen vorherigen Inhalt zurück. |
|
Gibt die zurzeit zugehörige Ressource frei und akzeptiert eine neue Ressource. |
|
Tauscht die Ressource und deleter mit dem bereitgestellten unique_ptr-Objekt aus. |
Operators
operator bool |
Der Operator gibt einen Wert eines Typs zurück, der in bool konvertiert werden kann. Das Ergebnis der Konvertierung in bool ist true, wenn get() != pointer(), andernfalls false. |
operator-> |
Die Memberfunktion gibt stored_ptr. zurück. |
operator* |
Die Memberfunktion gibt *stored_ptr. zurück. |
Weist den Wert eines unique_ptr -Objekts (oder eines pointer-type) dem aktuellen unique_ptr-Objekt zu. |
Anforderungen
Header: <Arbeitsspeicher>
Namespace: std