std::shared_ptr<T>:: operator=
From cppreference.net
<
cpp
|
memory
|
shared ptr
C++
Memory management library
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
std::shared_ptr
| Member functions | ||||
|
shared_ptr::operator=
|
||||
| Modifiers | ||||
| Observers | ||||
|
(C++17)
|
||||
|
(
until C++20*
)
|
||||
|
(C++26)
|
||||
|
(C++26)
|
||||
| Non-member functions | ||||
|
(until C++20)
(until C++20)
(until C++20)
(until C++20)
(until C++20)
(C++20)
|
||||
|
functions
(
until C++26*
)
|
||||
| Helper classes | ||||
|
(C++20)
|
||||
| Deduction guides (C++17) |
|
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
|
Esta sección está incompleta
Motivo: sin ejemplo |
Véase también
|
reemplaza el objeto gestionado
(función miembro pública) |