Sobes.tech
Junior — Middle

¿En qué casos se llama al constructor de copia para un objeto en un lenguaje de programación?

sobes.tech AI

Respuesta de la IA

En C++, el constructor de copia se llama en los siguientes casos:

  • Al inicializar un objeto con otro objeto del mismo tipo, por ejemplo:

    MyClass a;
    MyClass b = a; // llamada al constructor de copia
    
  • Al pasar un objeto por valor a una función:

    void func(MyClass obj) { /*...*/ }
    func(a); // copia del objeto al llamar
    
  • Al devolver un objeto por valor desde una función:

    MyClass func() {
      MyClass temp;
      return temp; // copia al devolver
    }
    
  • Al asignar un objeto a otro del mismo tipo (si no se usa el operador de asignación):

    b = a; // aquí se llama al operador de asignación, no al constructor de copia
    

Es importante destacar que los compiladores modernos pueden optimizar la copia (elisión de copia), pero conceptualmente, el constructor de copia se llama en estas situaciones.