Почему конструктор копирования вызывается, когда мы возвращаем объект из метода по значению
почему конструктор копирования вызывается, когда мы возвращаем объект из метода по значению. пожалуйста, смотрите мой код ниже, в котором я возвращаю объект из метода, в то время как возвращение элемента управления ударяет конструктор копирования, а затем возвращает. меня не понимают следующие вещи:
1) почему он вызывает конструктор копирования.
2) какой объект неявно передается в конструктор копирования,
3) в какой конструктор объекта копирования будет копироваться содержимое,
4) зачем копировать содержимое объекта при возврате. так что плз помогите.
#include "stdafx.h"
#include
#include
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;
}