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.