为什么必须要有静电力?

时间:2019-03-18 14:52:59

标签: c++ static

有人可以为我澄清这段代码吗? 我已经做了一些研究,以了解引用和静态信息,但是在此示例中,我仍然不了解静态信息的作用。以及为什么它必须首先存在(如果缺少static,编译器会发出警告,程序可能会崩溃,为什么?)。

int & foo(int b)
{
    static int a = 7;


    a += b;
    return a;
}

int main() {

    int & x = foo(0);
    int & y = foo(1);
    cout << (x + y);

}

1 个答案:

答案 0 :(得分:7)

static局部变量将具有完整程序的生命周期。对它的引用将永远不会失效。

否则,非静态局部变量一旦超出范围(将在函数返回时发生),它们将“消失”,并且您将无法引用不存在的局部变量。

关于static局部变量及其初始化的重要说明:仅在函数第一次调用时才一次对其进行初始化。该变量将在以后的调用中被初始化,但将保留其具有的最后一个值。