任何人都可以解释输出吗?
#include<iostream>
using namespace std;
int &fun(){
static int x = 10;
return x;
}
int main(){
fun() = 30;
cout << fun();
return 0;
}
输出为30
答案 0 :(得分:10)
这就是静态本地工作的方式 - 它们在函数调用之间保持值。基本上fun()
有一个静态局部并返回对它的引用,效果与全局变量的效果大致相同。
答案 1 :(得分:2)
您可以通过引用返回静态,因此当您fun() = 30
进行更改时。
很清楚,不是吗?
基本上,foo()
会将引用返回给x
。
答案 2 :(得分:1)
当您调用fun()
时,会创建一个静态变量并返回对它的引用。基本上,由于static
,即使退出函数的范围,变量也不会被销毁。您使用30影响参考,然后调用您获得的函数30(第二次调用时的x在第一次调用时完全相同)。基本上静态在这种情况下就像一个全局变量。
答案 3 :(得分:0)
AS fun是对函数的引用,所以当你写这行时
fun() = 30;
它在返回值中存储了30,即x
,这就是为什么输出为30的原因。