说我有以下代码:
#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)
,但这又可能是多余的,没有必要。任何澄清将不胜感激。
谢谢
最佳答案
是的,返回aString
很好,因为您通过值返回,因此理论上会创建一个副本(RVO可以加入,但如果这样做,则不会影响行为)。
完全正确。只需return aString;
就可以了。
关于c++ - 返回引用参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11370050/