为什么这个静态变量的值没有改变

  • 本文关键字:改变 变量 静态 c++
  • 更新时间 :
  • 英文 :


obj.num有两个不同的值,但y的值不变。这与初始化与赋值有关吗?这是我无法完全理解的事情。

class A {
public:
int num;
A(int num): num(num) {}
};
int get_number(int x) {
A obj = A(x);
static int y = obj.num;
return y;
}
int main() {
std::cout << get_number(2) << std::endl;
std::cout << get_number(3) << std::endl;
return 0;
}

当函数第一次被调用时,静态局部变量只为函数定义一次。一旦它被定义和初始化,它将永远不会被重新定义或重新初始化。

要修改任何变量的值,无论是否为static,都必须为其赋值

最新更新