Spec-Zone.ru › C++

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) Может выбросить исключение, определенное реализацией.

Пример

См. также

reset
заменяет управляемый объект
(публичный член-функция)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/memory/shared_ptr/operator%3D

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API