El constructor de copia y el operador de asignación son similares, ya que ambos se usan para inicializar un objeto usando otro objeto. Pero, hay algunas diferencias básicas entre ellos:
Copiar constructor | Operador de asignación |
---|---|
Se llama cuando se crea un nuevo objeto a partir de un objeto existente, como una copia del objeto existente. | Este operador se llama cuando a un objeto ya inicializado se le asigna un nuevo valor de otro objeto existente. |
Crea un bloque de memoria separado para el nuevo objeto. | No crea un bloque de memoria separado o un nuevo espacio de memoria. |
Es un constructor sobrecargado. | Es un operador bit a bit. |
El compilador de C++ proporciona implícitamente un constructor de copia, si no se define ningún constructor de copia en la clase. | Se crea una copia bit a bit, si el operador Asignación no está sobrecargado. |
Sintaxis: className(const className &obj) { // cuerpo } |
Sintaxis: nombreclase obj1, obj2; obj2 = obj1; |
Considere el siguiente programa en C++.
CPP
// CPP Program to demonstrate the use of copy constructor // and assignment operator #include <iostream> #include <stdio.h> using namespace std; class Test { public: Test() {} Test(const Test& t) { cout << "Copy constructor called " << endl; } Test& operator=(const Test& t) { cout << "Assignment operator called " << endl; return *this; } }; // Driver code int main() { Test t1, t2; t2 = t1; Test t3 = t1; getchar(); return 0; }
Assignment operator called Copy constructor called
Explicación: Aquí, t2 = t1; llama al operador de asignación , igual que t2.operator=(t1); y Prueba t3 = t1; llama al constructor de copias , igual que Test t3(t1);
Debe leer: ¿ Cuándo se llama a un constructor de copia en C++?
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