¿Cuándo se llama a un constructor de copia en C++?

Un constructor de copias es una función miembro que inicializa un objeto usando otro objeto de la misma clase. El constructor de copias se llama principalmente cuando se crea un nuevo objeto a partir de un objeto existente, como una copia del objeto existente. 

En C++, se puede llamar a un constructor de copia para los siguientes casos: 

1) Cuando se devuelve por valor un objeto de la clase. 
2) Cuando se pasa un objeto de la clase (a una función) por valor como argumento. 
3) Cuando un objeto se construye a partir de otro objeto de la misma clase. 
4) Cuando el compilador genera un objeto temporal. 

Ejemplo:

C++

// CPP Program to demonstrate the use of copy constructor
#include <iostream>
#include <stdio.h>
using namespace std;
  
class storeVal {
public:
    // Constructor
    storeVal() {}
    // Copy Constructor
    storeVal(const storeVal& s)
    {
        cout << "Copy constructor has been called " << endl;
    }
};
  
// Driver code
int main()
{
    storeVal obj1;
    storeVal obj2 = obj1;
    getchar();
    return 0;
}
Producción

Copy constructor has been called 

Sin embargo, no se garantiza que se llamará a un constructor de copia en todos estos casos, porque el estándar C++ permite que el compilador optimice la copia en ciertos casos, un ejemplo es la optimización del valor de retorno (a veces denominada RVO )

Nota: el compilador de C++ proporciona implícitamente un constructor de copia, si no se define ningún constructor de copia en la clase.

Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *