コード1 : ttp://codepad.org/92VnkX7S
このように、MyStringクラスにはoperator+=を使ってoperator+を実装しています。
ただしoperator+はfriend関数として宣言して使いたいと思います(変えられない前提)。

ところが、よくよく考えると
friend MyString operator+(const MyString& lhs,〜
MyString temp = lhs;
って無駄ですよね?ならいっそ
friend MyString operator+(MyString lhs,〜
lhs += rhs;
の方が効率は上がるのでしょうか?

すなわち
コード2 : ttp://codepad.org/JAkODbn0
の方が効率はいいのでしょうか?
Effective C++ 日本語 3rd edn 11項のp53には
そう思えるような記述が記述があるのですが、
実際どうなんでしょう?

可読性的にはコード1の方が良いとは思うのですが、
もしコード2の方が効率はいいのでしたらそっちにしようかなぁと。


よろしくお願いします。