Namespaces
Variants

std::shared_ptr<T>:: operator=

From cppreference.net
Memory management library
( exposition only* )
Allocators
Uninitialized memory algorithms
Constrained uninitialized memory algorithms
Memory resources
Uninitialized storage (until C++20)
( until C++20* )
( until C++20* )
( until C++20* )

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

Пример

Смотрите также

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