为什么当我们从方法中按值返回对象时会调用复制构造函数。请看我下面的代码,因为我从一个方法返回一个对象,而返回控制是点击复制构造函数然后返回。我不明白以下事情:
1)为什么它调用复制构造函数。
2)哪个对象隐式传递给复制构造函数,
3)复制构造函数将内容复制到哪个对象,
4)在返回时复制对象内容的必要性是什么。所以请帮忙。
#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;
}