#include<iostream>
using namespace std;
int &fun()
{
static int x;
return x;
}
int main()
{
fun() = 10;
cout<<fun();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
上述程序输出10.但我很困惑这个程序实际上是如何工作的.
fun()返回静态变量的引用x,在第一个表达式中main():
fun() = 10;
^ ^
| x assigned 10
returned x
Run Code Online (Sandbox Code Playgroud)
因为静态变量的值在不同的函数调用之间持续存在,所以在下一个表达式中:
cout << fun();
^
return x with value 10
Run Code Online (Sandbox Code Playgroud)
注意:因为您正在返回静态变量的引用,所以它不是未定义的行为.
| 归档时间: |
|
| 查看次数: |
139 次 |
| 最近记录: |