>>257
>>255の大ボケは無視して答えると、一般にはユーザ定義型を
渡す場合は値渡しではなくconst referenceを使用するようにすべきだろう。
もっともstringに関しては参照カウントとcopy on writeを用いて
実装されていることが多いはずなので、思ったほどの負荷は無いと思われ。
# そのお陰で
# string s("abc");
# string t(s);
# s[0] = '!';
# で t まで書き変わっちゃう実装とかが多いみたいだけどね。

ていうか、そのレベルの疑問は「Effective C++」辺りを読めば
あっさり解決する代物なので、読んでおくことを勧める。