《C++ Primer》6.1 函数基础 —— 局部静态对象

局部静态对象

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

一个例子:

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

你可能感兴趣的:(《C++ Primer》6.1 函数基础 —— 局部静态对象)