在以下代码中
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.
您永远不应该返回引用或指向局部变量的指针.它会在函数返回时被销毁.它可能在某些情况下起作用,因为堆栈可能尚未被覆盖.但它最终会意外失败.
将某事物的引用分配给相同类型的值是合法的.因此,在您的作业中,会制作副本.