• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:参照について)

C++初心者による参照の違いについて

このQ&Aのポイント
  • C++初心者がFooクラスのoperatorを参照にすると出力がBになり、参照なしの場合はB Aになる。
  • operatorに参照を設定すると出力がB、参照なしの場合はB Aとなる理由を教えてください。
  • C++のoperatorの参照の有無による出力結果の違いについて、詳しく教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • keibou21
  • ベストアンサー率31% (18/58)
回答No.1

参照とコピーの違いですね x = Foo(); について何が起こっているか考えてみましょう。 1.Foo()でFoo型の一時変数が生成されます(コンストラクタが走る) 2.operator=()が実行されます(ここで戻り値がFooかFoo&の違いが出るところ) 3.xに戻り値が代入されます 2.のところでFoo operator=(const Foo&)の場合 return *this; とされていますが、戻り値がFooなのでここで新たに一時変数が生成され、コピーコンストラクタが走ります ところが、Foo& operator=(const Foo&)の場合では、 参照(自分そのもの)を返り値になっていますので x = Foo(); // ここでできたFooの一時変数がそのままxに代入されます。 参照返しの場合はoperator=()内で一時変数が生成されないので当然コピーコンストラクタも呼ばれません。 こんな感じで分かりますでしょうか?

maspon
質問者

お礼

分かりやすい説明ありがとうございます。おかげ様で理解できました。 コピーコンストラクタについて理解が不十分でした。

関連するQ&A