局部静态对象
局部静态对象在程序的执行路径第一次经过对象定义语句时初始化,并且直到程序终止才被销毁。
一个例子:
//auto_int.cpp int func() { int val = 0; return val++; } int main() { int times = 10; while (times--) { cout << func() << ' '; } return 0; }
以上程序执行的结果为:
0 0 0 0 0 0 0 0 0 0
而使用静态变量:
//static_int.cpp int func() { static int val = 0; return val++; } int main() { int times = 10; while (times--) { cout << func() << ' '; } return 0; }
结果为:
0 1 2 3 4 5 6 7 8 9
可以发现,static的变量在当前块结束之后也还是有效的。