Consider this code:
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; 
}
Between getCopy1 and getCopy2, what one:
- Clearly shows that the passed string isn't going to get modified
- Clearly shows that the user will get a new string returned
- Is faster / can be better optimized by the compiler (C++11 enabled, consider move semantics)
?
 
     
     
     
    