私は単に次のようなクラスを作成しました:
class GreatClass
{
public:
GreatClass(){cout<<"Default Constructor Called!\n";}
GreatClass(GreatClass &gc){cout<<"Copy Constructor Called!\n";}
GreatClass(const GreatClass &gc){cout<<"Copy Constructor (CONST) Called!\n";}
~GreatClass(){cout<<"Destructor Called.\n";}
GreatClass& operator=(GreatClass& gc){cout<<"Assign Operator Called!";return gc;}
const GreatClass& operator=(const GreatClass& gc){cout<<"Assign Operator (CONST) Called!";return gc;}
};
GreatClass f(GreatClass gc)
{
return gc;
}
main() 関数には、次の 2 つのバージョンがあります。
バージョン #1:
int main()
{
GreatClass g1;
GreatClass G = f(g1);
}
バージョン #2:
int main()
{
GreatClass g1;
f(g1);
}
それらはすべて同じ出力を生成します。
Default Constructor Called!
Copy Constructor Called!
Copy Constructor Called!
Destructor Called.
Destructor Called.
Destructor Called.
f(g1)
に割り当てているときに何も起こらない理由がわかりませんG
。この時点で呼び出されるコンストラクターまたはオペレーターは?
ありがとう。