Por que o construtor de cópia é chamado quando retornamos um objeto de um método por valor
Por que o construtor de cópia é chamado quando retornamos um objeto de um método por valor. Por favor, veja o meu código abaixo em que eu estou retornando um objeto de um método enquanto o controle de retorno está atingindo o construtor de cópia e, em seguida, retornando. Eu não sou entendido seguindo as coisas:
1) porque ele está chamando construtor de cópia.
2) qual objeto está passando implicitamente para copiar o construtor,
3) para o qual o construtor de cópia de objeto copiará o conteúdo,
4) qual é a necessidade de copiar o conteúdo do objeto durante o retorno. então plz ajuda.
#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;
class ClassA
{
int a, b;
public:
ClassA()
{
a = 10;
b = 20;
}
ClassA(ClassA &obj)
{
cout << "copy constructor called" << endl;
}
};
ClassA function (ClassA &str)
{
return str;
}
int main ()
{
ClassA str;
function(str);
//function(str);
return 0;
}