O que é um construtor de cópias?
Um construtor de cópia é uma função especial em C ++ e outras linguagens influenciadas por C ++, que copiam um objeto de codificação. O programador faz isso adicionando a declaração do construtor de cópia e referenciando um objeto. Principalmente, isso beneficia o programador economizando tempo, mas também garante que o programador não insira a codificação do objeto incorretamente. Quando a cópia é feita, ela deve ter um ponteiro de memória diferente ou apontará para a mesma seção para a qual o objeto original está apontando. Uma das principais desvantagens do uso de construtores de cópia é que eles não podem funcionar independentemente; se o objeto original for apagado, a cópia também será.
Quando um programador usa um construtor de cópia, ele ou ela está dizendo ao código para copiar um objeto já listado no código. Para fazer isso, o programador deve primeiro usar uma declaração para informar a codificação para executar a função de cópia. O programador também deve fazer referência a outro objeto, para que o objeto já tenha sido construído ou não haverá como executar a cópia.
O principal benefício do uso de um construtor de cópias é que ele economiza tempo. Em vez de redigitar as mesmas funções e codificar novamente, o programador pode apenas adicionar uma referência e o objeto estará pronto. Isso tem outro benefício oculto na codificação consistente e precisa. Desde que o objeto original seja codificado corretamente, o objeto copiado também terá a codificação correta. Esses dois benefícios são mais aparentes com objetos complexos, mas os programadores também podem se beneficiar da cópia de objetos simples.
Nas linguagens C ++, muitas funções requerem um ponteiro de memória. Isso informa à função exatamente onde procurar na memória determinadas informações ou onde pode armazenar dados. O programador deve especificar um novo ponteiro de memória quando um construtor de cópia é usado; caso contrário, os dois objetos usarão o mesmo espaço de memória. Na superfície, isso pode não parecer ruim, mas pode levar a inconsistências. Por exemplo, se os dois objetos compartilharem o mesmo ponteiro e um objeto for usado para enviar solicitações de empréstimo enquanto o objeto copiado for enviado para enviar solicitações de cartão de crédito, todas as solicitações de cartão de crédito serão armazenadas nas solicitações de empréstimo.
Os programadores precisam ter cuidado ao apagar um objeto, porque os objetos construtores de cópia não podem funcionar independentemente. Se o programador apagar o objeto original, o objeto copiado não terá nada a que fazer referência. Sem código para referência, o objeto copiado não poderá executar sua tarefa e se tornará inútil.