【发布时间】:2016-01-10 23:20:59
【问题描述】:
我尝试了以下代码:
int& fun()
{
static int y = 20;
//y = 40;
return y;
}
int main()
{
fun() = 30;
cout << fun() <<endl;
return 0;
}
如果 y = 40 行未注释,则 main 的输出为 40。为什么 y 的值在分配给 main() 中的 30 时不会改变?
【问题讨论】:
-
用调试器单步调试,应该就清楚了。
-
按照这个逻辑,即使没有 y = 40,fun() 不会将 y 重置为 20 吗?
-
@user4728046 因为静态只初始化一次
-
@Christophe 谢谢!