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) (obsoleto en C++11)
(eliminado en C++17)
template < class Y, class Deleter >
shared_ptr & operator = ( std:: unique_ptr < Y, Deleter > && r ) ;
(6)

Reemplaza el objeto gestionado por el gestionado por r .

Si * this ya posee un objeto y es el último shared_ptr que lo posee, y r no es igual a * this , el objeto se destruye mediante el deleter asociado.

1,2) Comparte la propiedad del objeto gestionado por r . Si r no gestiona ningún objeto, * this tampoco gestiona ningún objeto. Equivalente a shared_ptr < T > ( r ) . swap ( * this ) .
3,4) Asigna por movimiento un shared_ptr desde r . Después de la asignación, * this contiene una copia del estado previo de r , y r está vacío. Equivalente a shared_ptr < T > ( std :: move ( r ) ) . swap ( * this ) .
5) Transfiere la propiedad del objeto gestionado por r a * this . Si r no gestiona ningún objeto, * this tampoco gestiona ningún objeto. Después de la asignación, * this contiene el puntero previamente mantenido por r , y use_count ( ) == 1 ; además r queda vacío. Equivalente a shared_ptr < T > ( r ) . swap ( * this ) .
6) Transfiere la propiedad del objeto gestionado por r a * this . El deleter asociado a r se almacena para la futura eliminación del objeto gestionado. r no gestiona ningún objeto después de la llamada. Equivalente a shared_ptr < T > ( std :: move ( r ) ) . swap ( * this ) .

Contenidos

Parámetros

r - otro puntero inteligente para compartir la propiedad o adquirir la propiedad de

Valor de retorno

* this

Notas

La implementación puede cumplir con los requisitos sin crear un objeto temporal shared_ptr .

Excepciones

5,6) Puede lanzar excepciones definidas por la implementación.

Ejemplo

Véase también

reemplaza el objeto gestionado
(función miembro pública)