C++函数返回引用

Pwn*_*nna 20 c++

这是另一个n00b问题:

为什么我不能/不应该将referece返回到函数的局部变量?是因为临时变量在函数执行完毕后会自动销毁吗?

const string & wrap(string & s1, const string & s2){
    string temp;
    temp = s2 + s1 + s2;
    return temp;
}
Run Code Online (Sandbox Code Playgroud)

这个如何:

const string & wrap2(const string & s1, const string & s2){
    return (s2 + s1 + s2);  
}
Run Code Online (Sandbox Code Playgroud)

Set*_*gie 10

函数内部声明的变量在堆栈上分配.当函数返回到调用者时,堆栈中用于驻留的变量的空间被回收并且不再可用,并且那里的变量不再存在(他们确实做了但你不能使用它们,它们可以是随时覆盖).所以,是的,基本上你说的.


Qua*_*nic 7

就是这样.局部变量变为poof并在超出范围时被销毁.如果您返回一个引用或指针,那么该引用或指针将指向垃圾,因为该对象将不再存在.