Sobes.tech
Junior — Middle

Em que casos a chamada ao construtor de cópia é feita automaticamente em C++?

sobes.tech IA

Resposta da IA

A chamada automática do construtor de cópia em C++ ocorre nos seguintes casos:

  • Ao inicializar um objeto com outro objeto do mesmo tipo, por exemplo:

    MyClass a;
    MyClass b = a; // chamada ao construtor de cópia
    
  • Ao passar um objeto por valor para uma função:

    void func(MyClass obj); // ao chamar func(a), será chamado o construtor de cópia
    
  • Ao retornar um objeto por valor de uma função (antes de otimizações do compilador):

    MyClass func() {
        MyClass a;
        return a; // pode chamar o construtor de cópia
    }
    
  • Ao inicializar um objeto na lista de inicialização de outro objeto.

Se o construtor de cópia não estiver explicitamente definido, o compilador irá gerá-lo automaticamente, se possível.