gpt4 book ai didi

c++ - 返回一个引用参数

转载 作者:搜寻专家 更新时间:2023-10-31 01:14:25 25 4
gpt4 key购买 nike

假设我有以下代码:

#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 可以启动,但如果启动了,它不会启动不会影响行为)。

To be on the safe side I constructed a new object to be returned return string(aString) but again this may be overkill and not necessary.

完全正确。只需 return aString; 即可。

关于c++ - 返回一个引用参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11370050/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com