Vídeo: Programação de Computadores - Aula 21 - Construtores 2024
O construtor é uma função especial que C ++ invoca automaticamente quando um objeto é criado para permitir que o objeto se inicialize. Existem duas variações particulares do construtor conhecido como cópia e mover construtores.
Um construtor de cópia é o construtor que o 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 argumento uma referência a um objeto da classe X . Isso parece realmente inútil, mas basta ter um minuto para explorar por que o C ++ precisa de tais beasties.
Pense por um momento sobre o que acontece quando você chama uma função como a seguinte:
void fn (Student fs) {// … mesmo cenário; argumento diferente …} int main (int argcs, char * pArgs []) {Student ms; fn (ms); retornar 0;}
Na chamada para fn (), C ++ passa uma cópia do objeto ms e não o próprio objeto.
Agora considere o que significa criar uma cópia de um objeto. Primeiro, é preciso um construtor para criar um objeto, até mesmo uma cópia de um objeto existente. C ++ poderia criar um construtor de cópia padrão que copia o objeto existente no novo objeto de um byte de cada vez.
Isso é o que as linguagens antigas como C fazem. Mas e se a classe não quiser uma cópia simples do objeto? E se algo mais for necessário? (Ignore o "porquê?" Por um bom tempo.) A classe precisa ser capaz de especificar exatamente como a cópia deve ser criada.
Assim, o C ++ usa um construtor de cópia no exemplo anterior para criar uma cópia do objeto ms na pilha durante a chamada da função fn (). Este construtor de cópia especial seria Student:: Student (Student &) - diga isso três vezes rapidamente.