Spec-Zone.ru › C++

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

Пример

См. также

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

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

Spec-Zone.ru

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