次のコードを検討してください。
void doSomethingWithString(string& mString)
{
// mString gets modified in here
}
string getCopy1(const string& mString)
{
string result{mString}; doSomethingWithString(result); return result;
}
string getCopy2(string mString)
{
doSomethingWithString(mString); return mString;
}
と の間getCopy1
にgetCopy2
あるもの:
- 渡された文字列が変更されないことを明確に示しています
- ユーザーが新しい文字列を返すことを明確に示しています
- より高速/コンパイラによる最適化の向上 (C++11 対応、移動セマンティクスを考慮)
?