こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

return *this

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

投稿日時 - 2020-04-04 18:42:56

QNo.9731228

困ってます

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

「おまじない」とか「決まり文句」とか書いてある説明記事は、眉に唾を付けながら読むくらいがちょうどいいです。

return (* this );という書法も変で、普通は return * this ; とかっこを付けません。


コンストラクターを定義する関数には返り値が無くても、コンストラクトするとオブジェクトが返ります。

一般の関数は、返り値を返さないと、呼び出し元に伝わりません。
a = b = c; のように代入結果を再度使うことが絶対にない場合は返り値がなくてもよいのかもしれません。

投稿日時 - 2020-04-04 19:57:55

お礼

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

投稿日時 - 2020-04-04 20:40:07

あなたにオススメの質問