Sobes.tech
Junior — Middle

Em que casos ocorre a chamada do construtor de cópia para um objeto numa linguagem de programação?

sobes.tech IA

Resposta da IA

Em C++, o construtor de cópia é chamado 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) { /*...*/ }
    func(a); // cópia do objeto ao chamar
    
  • Ao retornar um objeto por valor de uma função:

    MyClass func() {
      MyClass temp;
      return temp; // cópia ao retornar
    }
    
  • Ao atribuir um objeto a outro do mesmo tipo (se o operador de atribuição não for usado):

    b = a; // aqui, o operador de atribuição é chamado, não o construtor de cópia
    

É importante notar que compiladores modernos podem otimizar a cópia (elisão de cópia), mas conceitualmente, o construtor de cópia é chamado nessas situações.