局部静态对象

局部静态对象在程序的执行路径第一次经过对象定义语句时初始化,并且直到程序终止才被销毁

一个例子:

//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的变量在当前块结束之后也还是有效的。

posted @ 2017-03-17 10:01  codinRay  阅读(167)  评论(0编辑  收藏  举报