在C++中返回局部变量的引用

Luv*_*Luv -2 c++ reference

可能重复:
C++返回对局部变量的引用
可以在其范围之外访问局部变量的内存吗?

在以下代码中

int& h() {

int o=100;
return o; 
}

int main() {
int t=h();     //line 1
cout<<t;     //line 2
return 0;
}
Run Code Online (Sandbox Code Playgroud)

为什么输出为100,即函数的局部变量的值以及为什么第1行没有错误,因为函数的返回类型是int&但我们将其返回值返回到int.

Raf*_*sta 5

  1. 您永远不应该返回引用或指向局部变量的指针.它会在函数返回时被销毁.它可能在某些情况下起作用,因为堆栈可能尚未被覆盖.但它最终会意外失败.

  2. 将某事物的引用分配给相同类型的值是合法的.因此,在您的作业中,会制作副本.