string& GetMyStr(string& somestr)
{
string & str=somestr;
//do something with str
return str;
}
Run Code Online (Sandbox Code Playgroud)
str是一个本地对象,但为什么我还能在返回后得到这个值?我想在函数返回之后,它也消失了,并且没有引用返回值.我想我也想念它.
因为您正在返回对函数外部存在的参数的引用.你被引用作为拍摄参数somestr,然后进行str指的是对象,所以str是不是本地对象,但调用者传递给函数的对象的引用.
这将创建对传入的参数的引用:
string & str=somestr;
Run Code Online (Sandbox Code Playgroud)
然后将其作为参考返回.str同时执行的任何操作都是为了somestr调用调用者的参数.
您将看到,如果您打印传递给的参数GetMyStr,然后打印该字符串相同的调用的返回值(或者您可以只比较也将相同的地址).