std::shared_ptr<T>::operator=
De cppreference.com
< cpp | memory | shared ptr
shared_ptr& operator=(const shared_ptr& r )noexcept; | (1) | |
template<class Y > shared_ptr& operator=(const shared_ptr<Y>& r )noexcept; | (1) | |
shared_ptr& operator=( shared_ptr&& r )noexcept; | (2) | |
template<class Y > shared_ptr& operator=( shared_ptr<Y>&& r )noexcept; | (2) | |
template<class Y > shared_ptr& operator=(std::auto_ptr<Y>&& r ); | (3) | (en desuso en C++11) (eliminado en C++17) |
template<class Y, class Deleter > shared_ptr& operator=(std::unique_ptr<Y,Deleter>&& r ); | (4) | |
Reemplaza el objeto gestionado con el gestionado por r
.
Si *this
ya posee un objeto y es el último shared_ptr
que lo posee, y r
no es lo mismo que *this
, el objeto se destruye a través del eliminador almacenado.
1) Comparte la posesión 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).2) Asigna por movimiento un
shared_ptr
a partir de r
. Después de la asignación, *this contiene una copia del estado anterior de r
y r
está vacío. Equivalente a shared_ptr<T>(std::move(r)).swap(*this).3) Transfiere la posesión 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 anteriormente mantenido por r
, y use_count()==1; r
también está vacío. Equivalente a shared_ptr<T>(r).swap(*this).4) Transfiere la posesión del objeto gestionado por
r
a *this. El eliminador asociado con 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).Contenido |
[editar]Parámetros
r | - | Otro puntero inteligente del que compartir o adquirir la posesión. |
[editar]Valor de retorno
*this
[editar]Notas
La implementación puede cumplir con los requisitos sin crear un objeto shared_ptr
temporal.
[editar]Excepciones
3-4) Puede lanzar excepciones definidas por la implementación.
[editar]Ejemplo
Esta sección está incompleta Razón: sin ejemplo |
[editar]Véase también
Reemplaza el objeto gestionado. (función miembro pública) |