局部靜態(tài)對象
局部靜態(tài)對象在程序的執(zhí)行路徑第一次經過對象定義語句時初始化,并且<u>直到程序終止才被銷毀。</u>
一個例子:
//auto_int.cpp
int func() {
int val = 0;
return val++;
}
int main() {
int times = 10;
while (times--) {
cout << func() << ' ';
}
return 0;
}
以上程序執(zhí)行的結果為:
0 0 0 0 0 0 0 0 0 0
而使用靜態(tài)變量:
//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
由此可以發(fā)現(xiàn): static的變量在當前塊結束(函數(shù)結束調用)之后也還是有效的。