Copiar la lista vinculada del constructor C ++

Copiar la lista vinculada del constructor C ++
Un constructor de copias es como un constructor; Es una función que se usa para inicializar un valor a un objeto con la ayuda de otro objeto en la misma clase. Es más fácil de usar en el lenguaje de programación C ++ cuando hay varios parámetros de objetos en la clase. Este artículo utilizará la función de constructor de copias en la lista vinculada.

¿Cuándo llamamos a un constructor de copias??

En el lenguaje de programación C ++, podemos llamar a una función de copia en las siguientes situaciones. Se llama cuando devuelve un objeto de la clase por el valor. También se recomienda utilizar un constructor de copias en la condición cuando pasamos un objeto de la clase por un valor como parámetro cuando creamos un objeto creado dependiendo del otro objeto que pertenece a la misma clase.

Tipos de un constructor de copias

Hay dos tipos de constructores de copias.

Copiar constructor (predeterminado)

Si el usuario no define ningún constructor de copias, entonces, en este caso, el compilador suministra su constructor.

Constructor definido por el usuario

El programador siempre define el constructor definido por el usuario.

¿Cuándo necesitamos un constructor de copias??

Si nuestro constructor de copias no está definido, entonces el compilador C ++ crea el constructor de copias que es el predeterminado. Necesitamos definir nuestro constructor cuando un objeto usa punteros, asignación de memoria dinámica u otros recursos.

Sintaxis

Name_of_class (const name_of_class & object_name)

// Cuerpo constructor

Después de usar el constructor de copias, obtenemos dos copias. Uno se conoce como una copia superficial, mientras que la segunda es una copia profunda. La copia superficial es producida por el constructor de copia predeterminado. Mientras que el constructor de copia profunda asigna la memoria automáticamente, copia el valor real. Los valores copiados y reales se almacenan en diferentes lugares dentro de la memoria. Se dice que se requiere una copia profunda al crear un constructor definido por el usuario.

Implementación de un constructor de copias

Hemos implementado el código en el editor de texto de Ubuntu, y el valor resultante se obtiene mediante ejecución en el terminal de Linux.

Este programa utilizará el concepto de programación orientado a objetos, ya que los constructores se utilizan para hacer clases. Se crea una clase con la parte privada que tiene valores de tipo entero. En la parte pública, se crea un constructor con el nombre de la clase. Este constructor usará dos valores en el parámetro para recibir el valor aprobado del programa principal. Dentro del constructor, los valores enviados se asignan a las nuevas variables.

Después del constructor, nuevamente, se crea un nuevo constructor. Es un constructor copiado. Como hemos descrito anteriormente, este constructor toma el nombre de clase y el objeto creado.

Luego hemos usado dos funciones, getx () y get (), que devolverá el valor de las variables. En el programa principal, los constructores se llaman utilizando el nombre de clase, cada uno (original) y el constructor de copias contiene argumentos en el parámetro mientras llama. El constructor normal contiene dos valores que se pasan a la variable. Y el constructor de copias se asigna con el objeto de la primera clase. Para mostrar el valor resultante, llamaremos a la función GET utilizando objetos de ambos constructores.

Guardaremos el código y lo ejecutaremos usando el compilador G++.

En la ejecución del código fuente, puede ver que ambos valores son los mismos que los constructores pasaron del original o por el constructor de copias.

Concepto de lista vinculada en C++

Una lista vinculada es una estructura de datos que contiene varios nodos conectados a través de las direcciones almacenadas en cada nodo.

nodo

datos enteros;
struct nodo *next_part;
;

Creamos una estructura que tiene una parte de datos que almacena los valores en él y la siguiente parte que almacena la dirección del nodo adyacente. El siguiente paso que hacemos es inicializar los nodos en el programa principal. Todos los nodos se declaran como nulos usando los punteros.

Cada parte de datos del nodo es asignada por los valores. Esto se hace accediendo a esa parte del nodo.

Uno -> datos = 1;

Del mismo modo, todos los nodos obtienen sus datos relevantes.

Lo principal en la lista vinculada es la conexión entre los nodos creados. Esto se hace cuando se asigna la siguiente parte de un nodo con la dirección del segundo nodo; Del mismo modo, el segundo nodo contiene la dirección del tercero. Y así sucesivamente, este proceso continúa hasta el último nodo. La siguiente parte del último nodo se declara nula ya que no hay más nodo aquí.

El constructor de copias y la lista vinculada en c++

Para usar un constructor de copias en la lista vinculada, hemos utilizado una estructura para crear el nodo. Después de cerrar la estructura, se usa una clase con el nombre Linked_List aquí. La parte privada contendrá las variables de una cabeza de tipo puntero y una cola. Un constructor normal asigna los valores a las partes de la cabeza y la cola en la parte pública.

Dos variables de tipo entero aceptarán los valores que se enviarán desde el programa principal creando el objeto. Estas variables se asignan a las variables de cabeza y cola para almacenar valores en ellas. Después del constructor normal, se declara un constructor de copias. Esto será del mismo nombre, y su parámetro contendrá un nombre de clase constante con el objeto. Este constructor también se asigna con los mismos valores. Pero se accede a estos con los objetos. Obtendremos estos valores usando la función get (). Ambos valores en la variable se devolverán.

Después del constructor, se usa una función simple de agregar un nodo al nodo existente. Se crea un nuevo nodo de nombre temporal. La parte de datos se asigna con el valor. Y la siguiente parte se declara como nula. Aquí verificamos si el nodo agregado es el primero o la lista vinculada ya contiene un nodo en él. Entonces, se usa una declaración if-else aquí. Verificará si la cabeza es igual a nula, entonces la cabeza y la cola se asignan el valor de "tmp". Pero en otro caso, si no son nulos, entonces la siguiente parte de la cola se asigna con la dirección de un nuevo nodo. Significa "TMP" contendrá la dirección de la cola. Y la cola obtendrá el valor actualizado.

Ahora en el programa principal, crearemos el objeto de la clase; Al crear el objeto, los constructores se llaman. El original y el constructor de copias contendrá los valores de los parámetros. El constructor de copias crea el objeto y se asigna con el objeto del constructor original.

Estos valores se mostrarán. Para ver el valor resultante, ejecute el programa en el terminal. Puedes ver que ambos constructor tienen los mismos valores.

Conclusión

Este artículo explica el trabajo y la creación de un constructor de copias en la lista vinculada usando C++. Esto se hace explicando el constructor de copias, sus tipos y el uso en un programa simple demostrado en el ejemplo. Además, el concepto de creación de la lista vinculada también se explica. Se utiliza un ejemplo combinado de una lista vinculada con el constructor de copias para borrar cada ambigüedad del usuario final.