局部静态对象
局部静态对象在程序的执行路径第一次经过对象定义语句时初始化,并且<u>直到程序终止才被销毁。</u>
一个例子:
//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的变量在当前块结束(函数结束调用)之后也还是有效的。
网友评论