Espacios de nombres
Variantes

std::enable_shared_from_this::operator=

De cppreference.com
 
 
Biblioteca de servicios
Apoyo del lenguaje
Apoyo de tipos (tipos básicos, RTTI)
Macros de prueba de característica de la biblioteca (C++20)
Servicios de programa
Funciones variádicas
Apoyo de corrutinas (C++20)
Apoyo de contratos (C++26)
Comparación de tres vías (C++20)
(C++20)
(C++20)(C++20)(C++20)  
(C++20)(C++20)(C++20)

 
Gestión de memoria dinámica
Punteros inteligentes
(C++11)
(C++11)
(C++11)
(hasta C++17)
(C++11)
(C++23)
Asignadores de memoria
Recursos de memoria
Almacenamiento no inicializado
Algoritmos de memoria no inicializada
Algoritmos restringidos de memoria no inicializada
Apoyo para recolección de basura
(C++11)(hasta C++23)
(C++11)(hasta C++23)
(C++11)(hasta C++23)
(C++11)(hasta C++23)
(C++11)(hasta C++23)
(C++11)(hasta C++23)
Misceláneos
(C++20)
(C++11)
(C++11)
 
 
enable_shared_from_this<T>& operator=( const enable_shared_from_this<T> &obj ) noexcept;
(desde C++11)

No hace nada; devuelve *this.

Parámetros

obj - Un objeto enable_shared_from_this a asignar a *this.

Valor de retorno

*this

Notas

El miembro privado std::weak_ptr<T> no se afecta por este operador de asignación.

Ejemplo

enable_shared_from_this::operator= se define como protected para evitar cortes (slicing) accidentales pero permitir que las clases derivadas tengan operadores de asignación predeterminados.

#include <memory>
#include <iostream>
 
class SharedInt : public std::enable_shared_from_this<SharedInt>
{
public:
    explicit SharedInt(int n) : mNumber(n) {}
    SharedInt(const SharedInt&) = default;
    SharedInt(SharedInt&&) = default;
    ~SharedInt() = default;
 
    // Ambos operadores de asignación utilizan enable_shared_from_this::operator=
    SharedInt& operator=(const SharedInt&) = default;
    SharedInt& operator=(SharedInt&&) = default;
 
    int number() const { return mNumber; }
    
private:
    int mNumber;
};
 
int main() {
    std::shared_ptr<SharedInt> a = std::make_shared<SharedInt>(2);
    std::shared_ptr<SharedInt> b = std::make_shared<SharedInt>(4);
    *a = *b;
 
    std::cout << a->number() << std::endl;
}

Salida:

4

Véase también

Puntero inteligente con semántica de posesión de objeto compartida.
(plantilla de clase) [editar]
Morty Proxy This is a proxified and sanitized view of the page, visit original site.