• 締切済み

return *this

c++言語勉強中のものです。あるクラスのオブジェクトをobj とし、動的確保された メモリ領域pにobj をコピーするときコピーコンストラクターではメンバ関数は strcpy ( p. obj ); で終わるのに対し、代入演算子による代入コピーでは同じく strcpy ( p. obj ); の次に return (* this ); が追加され参考としているweb 資料では その目的は、「これは決まり文句 」で済ませていますが私には return ( *this )が 何故コピーコンストラクタの処理文には無く代入演算子処理文末尾にはあるのかわかりません。上記理由を教えていただければありがたいです。

みんなの回答

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.1

「おまじない」とか「決まり文句」とか書いてある説明記事は、眉に唾を付けながら読むくらいがちょうどいいです。 return (* this );という書法も変で、普通は return * this ; とかっこを付けません。 コンストラクターを定義する関数には返り値が無くても、コンストラクトするとオブジェクトが返ります。 一般の関数は、返り値を返さないと、呼び出し元に伝わりません。 a = b = c; のように代入結果を再度使うことが絶対にない場合は返り値がなくてもよいのかもしれません。

fbdact
質問者

お礼

解決です。今夜は眠れます。ありがとうございました。

専門家に質問してみよう