Como implementar o construtor de cópia em C ++?



Compreender construtores tem sido um enigma para muitos. Este artigo ajudará você a desmistificar o conceito de Construtor de Cópia em C ++

Compreensão Construtores tem sido um enigma para muitos. Este artigo o ajudará a desmistificar o conceito de Construtor de Cópia em C ++. As dicas a seguir serão abordadas neste artigo,

o que o formato faz em python

Então, vamos começarcom este artigo sobre Copiar Construtor em C ++





Um Construtor de Cópia é um Construtor que inicializa um objeto de uma classe usando outro objeto da mesma classe.

Sintaxe:



Temos a palavra-chave const porque queremos tornar o valor constante e garantir que ele não seja modificado em algum lugar do código. Como um construtor padrão, um construtor de cópia também é fornecido pelo compilador. Isso é chamado de Construtor de cópia padrão. Os construtores de cópia podem ser privados. Não podemos copiar os objetos da classe quando tornamos o construtor de cópia privado.

Aqui está um exemplo de código :

#include usando namespace 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 () {test t1 (7) // O construtor normal é chamado aqui test t2 = t1 // Copiar o construtor é chamado aqui cout<< 't1.x = ' << t1.getX() cout << 'nt2.x = ' << t2.getX() return 0 } 

Resultado:



Construtor de cópia de saída em C ++ - Edureka

Explicação

O programa acima é uma demonstração básica de um construtor de cópia. Temos um teste de classe, com um membro de dados privado do tipo int chamado x. Então temos um construtor parametrizado, que atribui 7 às variáveis ​​x. Temos um construtor de cópia, que instancia o valor de t2 com o valor de t1. O endereço de t2 é enviado, o qual contém o valor de t1 e é atribuído a x. Existe uma função get que retorna o valor de x.

A função principal possui um objeto de classe test chamado t1. Existe um valor associado a este objeto, este é um parâmetro. A função principal possui outro objeto de teste de classe chamado t2. Isso é inicializado usando a variável t1 e o construtor de cópia é chamado aqui. Por último, a função get é chamada em relação a t1 e t2 para obter o valor de x.

sobrecarga e substituição de método no exemplo de java

Tipos

Existem dois tipos de construtor de cópia.
⦁ Construtor de cópia superficial
⦁ Construtor Deep Copy

Continuando com este artigo sobre Construtor de Cópia em C ++

Construtor de cópia superficial:

Um Construtor de cópia superficial é um Construtor de cópia padrão.

Exemplo:

Duas pessoas acessam um banco de dados ao mesmo tempo e fazem alterações nos valores de dois sistemas diferentes. Se eles fizerem alterações no banco de dados, ambas as alterações serão mostradas no banco de dados. Ambos os objetos apontarão para o mesmo local de memória. Este é o Construtor de cópia superficial. Isso acontece principalmente quando estamos trabalhando com o construtor de cópia padrão. Aqui está um exemplo de código para: Construtor de cópia superficial:

#include usando namespace 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 } 

Resultado:

como evitar deadlocks em java

Explicação:

No código acima, usamos um construtor de cópia padrão fornecido pelo compilador. Portanto, é um Construtor de cópia superficial.

Continuando com este artigo sobre Construtor de Cópia em C ++

Construtor de cópia profunda

Deep Copy Constructor é um construtor de cópia definido pelo usuário.
Por exemplo:
Quando duas pessoas devem fazer uma apresentação e ambas copiam da mesma fonte, as cópias são separadas. Portanto, quando você faz modificações, apenas a outra cópia não é afetada. Este é o Deep Copy Constructor. Ambos os objetos estarão apontando para diferentes locais de memória e as mudanças em um não terão nenhum efeito no outro. A memória é alocada dinamicamente.

Aqui está um exemplo de código para: Construtor de cópia profunda:

#include usando namespace 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 () {test t1 (7) // O construtor normal é chamado aqui test t2 = t1 // Copiar o construtor é chamado aqui cout<< 't1.x = ' << t1.getX() cout << 'nt2.x = ' << t2.getX() return 0 } 

Resultado:

Explicação

Este é o mesmo código que usamos acima, fornecendo uma saída semelhante. É um construtor de cópia definido pelo usuário e, portanto, é um construtor de cópia profunda.

Assim, chegamos ao fim deste artigo sobre ‘Copiar Construtor em C ++’. Se você deseja saber mais, confira o pela Edureka, uma empresa de aprendizagem online confiável. O curso de certificação e treinamento em Java J2EE e SOA da Edureka foi projetado para treiná-lo tanto para conceitos básicos quanto avançados de Java, juntamente com várias estruturas Java como Hibernate e Spring.

Tem alguma questão para nós? Mencione isso na seção de comentários deste blog e entraremos em contato com você o mais breve possível.