任何人都可以解释输出?

aka*_*ash 3 c++ function

任何人都可以解释输出吗?

#include<iostream>

using namespace std;  

int &fun(){   
  static int x = 10;   
  return x;   
} 

int main(){         
  fun() = 30;
  cout << fun();          
  return 0;         
}
Run Code Online (Sandbox Code Playgroud)

输出是30

sha*_*oth 10

这就是静态本地工作的方式 - 它们在函数调用之间保持值.基本上fun()有一个静态局部并返回对它的引用,效果与全局变量的效果大致相同.


Luc*_*ore 2

您通过引用返回静态,因此当您这样做时,fun() = 30您会更改它。

很清楚,不是吗?

基本上,foo()返回对 的引用x