Namensräume
Varianten
Aktionen

std::shared_ptr<T>::operator=

Von cppreference.com
< cpp‎ | memory‎ | shared ptr
 
 
Speicherverwaltungsbibliothek
(nur Exposition*)
Algorithmen für uninitialisierten Speicher
(C++17)
(C++17)
(C++17)
Beschränkte uninitialisierte
Speicher-Algorithmen
C-Bibliothek

Allocatoren
Speicherressourcen
Unterstützung für Garbage Collection
(C++11)(bis C++23)
(C++11)(bis C++23)
(C++11)(bis C++23)
(C++11)(bis C++23)
(C++11)(bis C++23)
(C++11)(bis C++23)
Uninitialisierter Speicher
Explizites Lebenszeitmanagement
 
 
shared_ptr& operator=( const shared_ptr& r ) noexcept;
(1)
template< class Y >
shared_ptr& operator=( const shared_ptr<Y>& r ) noexcept;
(2)
shared_ptr& operator=( shared_ptr&& r ) noexcept;
(3)
template< class Y >
shared_ptr& operator=( shared_ptr<Y>&& r ) noexcept;
(4)
template< class Y >
shared_ptr& operator=( std::auto_ptr<Y>&& r );
(5) (in C++11 veraltet)
(removed in C++17)
template< class Y, class Deleter >
shared_ptr& operator=( std::unique_ptr<Y, Deleter>&& r );
(6)

Ersetzt das verwaltete Objekt durch das von r verwaltete.

Wenn *this bereits ein Objekt besitzt und dies der letzte shared_ptr ist, der es besitzt, und r nicht dasselbe ist wie *this, wird das Objekt über den besessenen Deleter zerstört.

1,2) Teilt sich den Besitz des von r verwalteten Objekts. Wenn r kein Objekt verwaltet, verwaltet *this ebenfalls kein Objekt. Äquivalent zu shared_ptr<T>(r).swap(*this).
3,4) Zuweisung per Move von einem shared_ptr aus r. Nach der Zuweisung enthält *this eine Kopie des vorherigen Zustands von r, und r ist leer. Äquivalent zu shared_ptr<T>(std::move(r)).swap(*this).
5) Überträgt den Besitz des von r verwalteten Objekts an *this. Wenn r kein Objekt verwaltet, verwaltet *this ebenfalls kein Objekt. Nach der Zuweisung enthält *this den zuvor von r gehaltenen Zeiger, und use_count() == 1; außerdem ist r leer. Äquivalent zu shared_ptr<T>(r).swap(*this).
6) Überträgt den Besitz des von r verwalteten Objekts an *this. Der mit r verbundene Deleter wird für die zukünftige Löschung des verwalteten Objekts gespeichert. r verwaltet nach dem Aufruf kein Objekt. Äquivalent zu shared_ptr<T>(std::move(r)).swap(*this).

Inhalt

[edit] Parameter

r - ein anderer Smart-Pointer, um den Besitz zu teilen oder den Besitz zu erwerben

[edit] Rückgabewert

*this

[edit] Hinweise

Die Implementierung kann die Anforderungen erfüllen, ohne ein temporäres shared_ptr-Objekt zu erstellen.

[edit] Ausnahmen

5,6) Kann implementierungsdefinierte Ausnahmen auslösen.

[edit] Beispiel

[edit] Siehe auch

Ersetzt das verwaltete Objekt
(public member function) [edit]