メソッドからオブジェクトを値で返すときにコピーコンストラクターが呼び出される理由。コントロールを返すときにメソッドからオブジェクトを返しているという点で、以下のコードを参照してください。コピーコンストラクターにヒットしてから戻ります。私は次のことを理解していません:
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;
}