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
,都必须为其赋值。