说我有以下代码:

#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/

10-11 21:34