Porque você precisa de construtores de cópia em c ++

Video: BgA - Who's It Gonna Be (Official Music Video)

O construtor é uma função especial que C ++ chama automaticamente quando um objecto é criado para permitir que o objecto a inicializar-se. Existem duas variantes particulares do construtor conhecido como o cópia de e mover construtores.

Um construtor de cópia é o construtor que C ++ usa para fazer cópias de objetos. Ele carrega o nome X :: X (const X&), Onde X é o nome da classe. Ou seja, é o construtor da classe X, que toma como argumentos uma referência a um objecto de classe X. Isso soa realmente inútil, mas apenas tomar um minuto para explorar por que C ++ precisa de tais bestas.

Pense por um momento sobre o que acontece quando você chamar uma função como a seguinte:

Video: Programação de Computadores - Aula 21 - Construtores

vazio fn (fs Student) {// ... mesmo argumento de cenário diferente ...} int main (int argcs, char * pArgs []) {Estudante ms-fn (ms) -Retornar 0-}


Na chamada para fn (), C ++ passa uma cópia do objecto Senhora e não o próprio objeto.

Agora, considere o que significa criar uma cópia de um objeto. Em primeiro lugar, é preciso um construtor para criar um objeto, mesmo uma cópia de um objeto existente. C ++ poderia criar um construtor de cópia padrão que copia o objeto existente para o novo objeto de um byte de cada vez.

Isso é o que as línguas mais antigas, como C fazer. Mas e se a classe não quer uma cópia simples do objeto? E se é necessária alguma outra coisa? (Ignore o “por quê?” Por pouco tempo.) A classe precisa ser capaz de especificar exatamente como a cópia deve ser criado.

Assim, C ++ usa um construtor de cópia no exemplo anterior para criar uma cópia do objecto Senhora na pilha durante a chamada da função fn (). Este construtor de cópia particular seria Estudante :: Estudante (Student&) - dizer que três vezes rapidamente.


Publicações relacionadas