C++ 为什么静电必须存在?
谁能帮我澄清一下这段代码吗? 我已经做了一些研究来理解引用和static,但是我仍然不明白static在这个例子中做了什么。为什么它必须首先存在呢?如果缺少static,编译器会发出警告,程序可能会崩溃,为什么C++ 为什么静电必须存在?,c++,static,C++,Static,谁能帮我澄清一下这段代码吗? 我已经做了一些研究来理解引用和static,但是我仍然不明白static在这个例子中做了什么。为什么它必须首先存在呢?如果缺少static,编译器会发出警告,程序可能会崩溃,为什么 int & foo(int b) { static int a = 7; a += b; return a; } int main() { int & x = foo(0); int & y = foo(1);
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);
}
静态局部变量将具有完整程序的生命周期。对它的引用永远不会失效
否则,非静态局部变量一旦超出范围(函数返回时会发生这种情况),就会消失,并且不能引用不存在的对象
关于静态局部变量及其初始化的一个重要注意事项是:在第一次调用函数时,它们只初始化一次。该变量不会在以后的调用中初始化,但会保留它的最后一个值。该函数返回对a的引用。如果没有static,则堆栈上有一个,因此函数返回对什么的引用?什么警告?阅读后你到底不明白什么?可能是重复的,但我不太确定:非常相关:也接近重复: