假设我有以下代码:
#include <string>
using namespace std;
string GetPath(const string & aString);
int main()
{
string dave = "hello";
string tom = GetPath(dave);
}
string GetPath(const string & aString)
{
//Do stuff
//If function fails then return original string
return aString;
//or should it be like this
return string(aString)
}
我有一种情况,我需要将一个字符串传递给一个函数,如果该函数的任务失败,那么我想简单地返回传入的字符串。
我的问题是,我对仅返回的行为有点不确定,aString
因为它是通过引用传递的。应该避免这种代码,如果是,为什么?我很惊讶我可以退回它(它可能会复制吗?)。
为了安全起见,我构造了一个要返回的新对象,return string(aString)
但这可能是矫枉过正而且没有必要。
任何澄清将不胜感激。
谢谢