21/03/18 23:28:58.79 QiBLMBVe.net
>>605
>これをやりたいときは
>みたいに参照を返すように宣言しないとダメですよね?
>obj.param1(...).param1(...) みたいに呼んだ場合はオブジェクトのコピーに2番目の呼び出しが行われ、
>結局破棄されてしまうので、objに2番目のparam1()の呼び出しが反映されない。
確かに、メソッドチェインを繰り返すたびにコピーコンストラクタが呼び出されるのは、イマイチ、という感覚を私も同様に持ちます
だからメソッドチェインを書くときには私も参照を返すように書きます、結局のところ「参照を返す」というのは「ポインタを返す」ことですから、コンストラクタの走りようがない
しかし「参照を返す『必要がある』」と言い切れるかどうか?
「結局破棄される」というのは最後のメンバ関数が返す実体を回収していないからであり、「参照を返すから」破棄されるわけではないと感じました。
実際、この実体を回収すれば、それはそれで 2 番目以降の呼び出しが意味を持つように書けると思います
URLリンク(ideone.com)
URLリンク(ideone.com)
参照でよくわからなくなったときに私がよくやる「参照返しを全く使わずポインタで押し通す」とすると次のようになるかと思います
URLリンク(ideone.com)