¿Cómo implementar el constructor de copias en C ++?



Entender a los constructores ha sido un enigma para muchos. Este artículo le ayudará a desmitificar el concepto de constructor de copias en C ++

Comprensión Constructores ha sido un enigma para muchos. Este artículo le ayudará a desmitificar el concepto de constructor de copias en C ++. En este artículo se cubrirán los siguientes consejos,

Así que comencemoscon este artículo sobre Copy Constructor en C ++





Un constructor de copia es un constructor que inicializa un objeto de una clase utilizando otro objeto de la misma clase.

Sintaxis:



Tenemos la palabra clave const porque queremos que el valor sea constante y asegurarnos de que no se modifique en alguna parte del código. Como un constructor predeterminado, el compilador también proporciona un constructor de copia. Esto se llama Constructor de copia predeterminado. Los constructores de copias pueden hacerse privados. No podemos copiar los objetos de la clase cuando hacemos que el constructor de copia sea privado.

Aquí hay un código de ejemplo :

diferencia entre extender e implementar
#incluya el uso del espacio de nombres std class test {private: int x public: test (int x1) {x = x1} test (const test & t2) {x = t2.x} int getX () {return x}} int main () {prueba t1 (7) // Aquí se llama al constructor normal test t2 = t1 // Aquí se llama al constructor de copia cout<< 't1.x = ' << t1.getX() cout << 'nt2.x = ' << t2.getX() return 0 } 

Salida:



Constructor de copia de salida en C ++ - Edureka

Explicación

El programa anterior es una demostración básica de un constructor de copias. Tenemos una prueba de clase, con un miembro de datos privados de tipo int llamado x. Luego tenemos un constructor parametrizado, que asigna 7 a las variables x. Tenemos un constructor de copia, que instancia el valor de t2 con el valor de t1. Se envía la dirección de t2 que contiene el valor de t1 y se asigna ax. Existe una función de obtención que devuelve el valor de x.

La función principal tiene un objeto de prueba de clase llamado t1. Hay un valor asociado con este objeto, este es un parámetro. La función principal tiene otro objeto de prueba de clase llamado t2. Esto se inicializa usando la variable t1 y aquí se llama al constructor de copia. Por último, se llama a la función get con respecto a t1 y t2 para obtener el valor de x.

Tipos

Hay dos tipos de constructores de copia.
⦁ Constructor de copia superficial
⦁ Constructor de copia profunda

Continuando con este artículo sobre el constructor de copias en C ++

Constructor de copia superficial:

Un constructor de copia superficial es un constructor de copia predeterminado.

Ejemplo:

son git y github lo mismo

Dos personas acceden a una base de datos al mismo tiempo y realizan cambios en los valores en dos sistemas diferentes. Si realizan cambios en la base de datos, ambos cambios se mostrarán en la base de datos. Ambos objetos apuntarán a la misma ubicación de memoria. Este es el constructor de copia superficial. Esto sucede principalmente cuando estamos trabajando con el constructor de copia predeterminado. Aquí hay un código de ejemplo para: Constructor de copia superficial:

#incluir usando espacio de nombres std class test {public: int y, z test (int y1, int z1) {y = y1 z = z1}} int main () {test a (7,13) cout<<'the sum is: '<< a.y+a.z return 1 } 

Salida:

Explicación:

En el código anterior, usamos un constructor de copia predeterminado proporcionado por el compilador. Por lo tanto, es un constructor de copia superficial.

Continuando con este artículo sobre el constructor de copias en C ++

Constructor de copia profunda

Deep Copy Constructor es un constructor de copias definido por el usuario.
Por ejemplo:
Cuando dos personas deben hacer una presentación y ambos copian de la misma fuente, las copias son separadas. Por lo tanto, cuando realiza modificaciones, solo la otra copia no se ve afectada. Este es Deep Copy Constructor. Ambos objetos apuntarán a diferentes ubicaciones de memoria y los cambios en uno no tendrán ningún efecto en el otro. La memoria se asigna dinámicamente.

Aquí hay un código de ejemplo para: Deep Copy Constructor:

#incluya el uso del espacio de nombres std class test {private: int x public: test (int x1) {x = x1} test (const test & t2) {x = t2.x} int getX () {return x}} int main () {prueba t1 (7) // Aquí se llama al constructor normal test t2 = t1 // Aquí se llama al constructor de copia cout<< 't1.x = ' << t1.getX() cout << 'nt2.x = ' << t2.getX() return 0 } 

Salida:

pruebas basadas en datos en selenio

Explicación

Este es el mismo código que hemos usado anteriormente, dando un resultado similar. Es un constructor de copia definido por el usuario y, por lo tanto, es un constructor de copia profunda.

Por lo tanto, hemos llegado al final de este artículo sobre 'Copiar constructor en C ++'. Si desea obtener más información, consulte el por Edureka, una empresa de aprendizaje en línea de confianza. El curso de certificación y capacitación Java J2EE y SOA de Edureka está diseñado para capacitarlo en conceptos básicos y avanzados de Java junto con varios marcos de Java como Hibernate y Spring.

Tienes una pregunta para nosotros? Menciónelo en la sección de comentarios de este blog y nos pondremos en contacto con usted lo antes posible.