C++ 你能告诉我给定的代码是如何到达那个输出的吗?

C++ 你能告诉我给定的代码是如何到达那个输出的吗?,c++,function,reference,C++,Function,Reference,代码的输出是30。但我不确定它是如何实现的 #include <iostream> int &fun() { static int x = 10; return x; } int main() { fun() = 30; std::cout << fun(); return 0; } #包括 int&fun() { 静态int x=10; 返回x; } int main() { f

代码的输出是30。但我不确定它是如何实现的

#include <iostream>      
int &fun() 
{ 
    static int x = 10; 
    return x; 
} 

int main() 
{ 
    fun() = 30; 
    std::cout << fun(); 
    return 0; 
} 
#包括
int&fun()
{ 
静态int x=10;
返回x;
} 
int main()
{ 
fun()=30;

std::coutYour
fun
给出了一个
int
的位置(因为它返回a)。该位置是
静态
变量
x
,该变量被初始化(从概念上讲,在程序运行之前初始化一次)为10

然后
fun()=30;
正在分配该位置。因此
x
被分配到30


最后,
cout为什么期望输出为10?您没有注意到
fun()返回类型中的
&
?通过引用返回,这样就可以写入声明的静态变量。@down投票者:这个问题问得很好,有可编译的代码,并记录了实际和预期的行为。除了一些明显性的概念(主观的)之外“我不知道它有什么问题。”芭丝谢芭:问题是C++的基础,C++上的任何一本书都应该解释这个问题。