std::shared_ptr<T>::operator=
shared_ptr& operator=( const shared_ptr& r ) noexcept; | (1) | (constexpr начиная с C++26) |
template< class Y > shared_ptr& operator=( const shared_ptr<Y>& r ) noexcept; | (2) | (constexpr начиная с C++26) |
shared_ptr& operator=( shared_ptr&& r ) noexcept; | (3) | (constexpr начиная с C++26) |
template< class Y > shared_ptr& operator=( shared_ptr<Y>&& r ) noexcept; | (4) | (constexpr начиная с C++26) |
template< class Y > shared_ptr& operator=( std::auto_ptr<Y>&& r ); | (5) | (устарело в C++11) (удалено в C++17) |
template< class Y, class Deleter > shared_ptr& operator=( std::unique_ptr<Y, Deleter>&& r ); | (6) | (constexpr начиная с C++26) |
Заменяет управляемый объект объектом, управляемым r.
Если *this уже владеет объектом и является последним shared_ptr, владеющим им, а r не совпадает с *this, объект уничтожается с помощью принадлежащего ему делитера.
1,2) Разделяет владение объектом, управляемым
r. Если r не управляет объектом, *this также не управляет объектом.
Эквивалентно
shared_ptr<T>(r).swap(*this).
3,4) Перемещает
shared_ptr из r. После присваивания *this содержит копию предыдущего состояния r, а r пуст.
Эквивалентно
shared_ptr<T>(std::move(r)).swap(*this).
5) Передаёт владение объектом, управляемым
r, указателю *this. Если r не управляет объектом, *this также не управляет объектом. После присваивания *this содержит указатель, ранее хранившийся в r, и use_count() == 1; кроме того, r пуст.
Эквивалентно
shared_ptr<T>(r).swap(*this).
6) Передаёт владение объектом, управляемым
r, указателю *this. Делитер, связанный с r, сохраняется для последующего удаления управляемого объекта. После вызова r не управляет объектом.
Эквивалентно
shared_ptr<T>(std::move(r)).swap(*this).Параметры
| r | - | другой умный указатель, с которым можно разделить владение или от которого можно получить владение |
Возвращаемое значение
*this
Примечания
Реализация может удовлетворять требованиям, не создавая временный объект shared_ptr.
Исключения
5,6) Может генерировать исключения, определяемые реализацией.
Пример
См. также
| заменяет управляемый объект (открытая функция-член) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/memory/shared_ptr/operator%3D