obj.num 有 2 个不同的值,但 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;
}
答案 0 :(得分:3)
静态局部变量在函数第一次被调用时定义一次,并且只定义一次。一旦它被定义和初始化,它就永远不会被重新定义或重新初始化。
要修改任何变量的值,无论是否为 static
,必须赋值给它。