Lista vinculada do Construtor de Copiar C ++

Lista vinculada do Construtor de Copiar C ++
Um construtor de cópias é como um construtor; É uma função usada para inicializar um valor para um objeto com a ajuda de outro objeto na mesma classe. É mais fácil de usar na linguagem de programação C ++ quando existem vários parâmetros de objeto na classe. Este artigo usará a função de construtor de cópias na lista vinculada.

Quando chamamos um construtor de cópia?

Na linguagem de programação C ++, podemos chamar uma função de cópia nas seguintes situações. É chamado quando retornamos um objeto da classe pelo valor. Um construtor de cópia também é recomendado para ser usado na condição quando passamos um objeto da classe por um valor como um parâmetro quando criamos um objeto criado, dependendo do outro objeto pertencente à mesma classe.

Tipos de um construtor de cópia

Existem dois tipos de construtores de cópias.

Copy Constructor (padrão)

Se o usuário não definir nenhum construtor de cópia, neste caso, o compilador fornece seu construtor.

Construtor definido pelo usuário

O programador sempre define o construtor definido pelo usuário.

Quando precisamos de um construtor de cópia?

Se nosso construtor de cópias não estiver definido, o compilador C ++ cria o construtor de cópias que é o padrão. Precisamos definir nosso construtor quando um objeto usa ponteiros, alocação de memória dinâmica ou outros recursos.

Sintaxe

Name_of_class (const name_of_class & object_name)

// corpo construtor

Depois de usar o construtor de cópias, obtemos duas cópias. Um é conhecido como uma cópia rasa, enquanto o segundo é uma cópia profunda. A cópia rasa é produzida pelo construtor de cópia padrão. Enquanto o construtor de cópias profundas aloca a memória automaticamente, ele copia o valor real. Os valores copiados e reais são armazenados em diferentes lugares dentro da memória. Dizem que é necessária uma cópia profunda ao criar um construtor definido pelo usuário.

Implementação de um construtor de cópia

Implementamos o código no editor de texto do Ubuntu, e o valor resultante é obtido por execução no terminal Linux.

Este programa usará o conceito de programação orientado a objetos, pois os construtores são usados ​​para fazer aulas. Uma classe é criada com a parte privada com valores do tipo inteiro. Na parte pública, um construtor é criado com o nome da classe. Este construtor usará dois valores no parâmetro para receber o valor passado do programa principal. Dentro do construtor, os valores enviados são atribuídos às novas variáveis.

Após o construtor, novamente, um novo construtor é criado. É um construtor copiado. Como descrevemos acima, este construtor pega o nome da classe e o objeto criado.

Em seguida, usamos duas funções, getx () e get (), que retornarão o valor das variáveis. No programa principal, os construtores são chamados usando o nome da classe, cada um (original), e o construtor de cópias contém argumentos no parâmetro enquanto chama. O construtor normal contém dois valores que são passados ​​para a variável. E o construtor de cópias é atribuído com o objeto da primeira classe. Para exibir o valor resultante, chamaremos a função Get usando objetos de ambos os construtores.

Vamos salvar o código e executá -lo usando o compilador G++.

Na execução do código -fonte, você pode ver que ambos os valores são os mesmos que os construtores passados ​​do original ou pelo construtor de cópias.

Conceito de lista vinculada em C++

Uma lista vinculada é uma estrutura de dados que contém vários nós conectados através dos endereços armazenados em cada nó.

Nó da estrutura

dados inteiros;
Nó da estrutura *Next_Part;
;

Criamos uma estrutura com uma parte de dados que armazena os valores nela e a próxima parte que armazena o endereço do nó adjacente. O próximo passo que fazemos é inicializar os nós no programa principal. Todos os nós são declarados como nulos usando os ponteiros.

Cada parte de dados do nó é atribuída pelos valores. Isso é feito acessando essa parte do nó.

Um -> dados = 1;

Da mesma forma, todos os nós recebem seus dados relevantes.

A principal coisa da lista vinculada é a conexão entre os nós criados. Isso é feito quando a próxima parte de um nó é atribuída com o endereço do segundo nó; Da mesma forma, o segundo nó contém o endereço do terceiro. E assim por diante, esse processo continua até o último nó. A próxima parte do último nó é declarada nula, pois não há mais nó aqui.

O construtor de cópias e a lista vinculada em C++

Para usar um construtor de cópias na lista vinculada, usamos uma estrutura para criar o nó. Depois de fechar a estrutura, uma classe com o nome Linked_list é usada aqui. A peça privada conterá as variáveis ​​de uma cabeça do tipo ponteiro e uma cauda. Um construtor normal atribui os valores às partes da cabeça e da cauda na parte pública.

Duas variáveis ​​do tipo inteiro aceitarão os valores que serão enviados do programa principal, criando o objeto. Essas variáveis ​​são atribuídas às variáveis ​​de cabeça e cauda para armazenar valores. Após o construtor normal, um construtor de cópia é declarado. Isso será do mesmo nome, e seu parâmetro conterá um nome de classe constante com o objeto. Este construtor também é atribuído com os mesmos valores. Mas estes são acessados ​​com os objetos. Obteremos esses valores usando a função get (). Ambos os valores na variável serão retornados.

Após o construtor, uma função simples de adicionar um nó ao nó existente é usada. Um novo nó de nome temp é criado. A parte dos dados é atribuída com o valor. E a próxima parte é declarada como nula. Aqui verificamos se o nó adicionado é o primeiro ou a lista vinculada já contém um nó nele. Portanto, uma declaração if-else é usada aqui. Ele verificará se a cabeça é igual a nulo, então a cabeça e a cauda são atribuídos o valor de "tmp". Mas em outro caso, se não forem nulos, a próxima parte da cauda será atribuída com o endereço de um novo nó. Isso significa que "tmp" conterá o endereço da cauda. E a cauda será atualizada o valor.

Agora no programa principal, criaremos o objeto da classe; Ao criar o objeto, os construtores são chamados. O construtor original e o cópia conterão os valores dos parâmetros. O construtor de cópias cria o objeto e é atribuído com o objeto do construtor original.

Esses valores serão exibidos. Para ver o valor resultante, execute o programa no terminal. Você pode ver que ambos o construtor têm os mesmos valores.

Conclusão

Este artigo explica o trabalho e a criação de um construtor de cópias na lista vinculada usando C++. Isso é feito explicando o construtor de cópias, seus tipos e uso em um programa simples demonstrado no exemplo. Além disso, o conceito de criação de lista vinculada também é explicado. Um exemplo combinado de uma lista vinculada com o construtor de cópias é usado para limpar todas as ambiguidades do usuário final.