C++ · Intermediário · Português · Técnico
construtor de cópia
Construtor que cria um objeto novo a partir de outro do mesmo tipo, com assinatura Classe(const Classe&). Define o que significa copiar, principalmente em classes que possuem recursos.
Onde usar
É chamado ao passar por valor, retornar e inicializar com outro objeto. Em code review, uma classe com ponteiro bruto e sem construtor de cópia próprio é suspeita de dupla liberação.
Em código
class Buf {
int* d_; std::size_t n_;
public:
Buf(const Buf& o)
: d_(new int[o.n_]), n_(o.n_) {
std::copy(o.d_, o.d_ + n_, d_);
}
};Exemplos
Essa classe tem ponteiro bruto e nenhum construtor de cópia próprio; vai dar dupla liberação.
Implementei o construtor de cópia para fazer uma cópia profunda do buffer.
Cuidado
A cópia padrão é membro a membro e copia só o endereço dos ponteiros, o que gera dois donos do mesmo recurso.
Sinônimos
copy constructor
Antônimos
construtor de movimento