std::shared_ptr<T>::operator=
Von cppreference.com
< cpp | memory | shared ptr
| 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
| Dieser Abschnitt ist unvollständig Grund: kein Beispiel |
[edit] Siehe auch
| Ersetzt das verwaltete Objekt (public member function) |