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; }
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