std::shared_ptr<T>::operator=
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) | (устаревшее в C++11) (удалено в C++17) |
template< class Y, class Deleter > shared_ptr& operator=( std::unique_ptr<Y, Deleter>&& r ); | (6) |
Заменяет управляемый объект на тот, который управляется 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/w/cpp/memory/shared_ptr/operator%3D