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

时间:2021-04-21 18:12:30

标签: c++

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;
}

1 个答案:

答案 0 :(得分:3)

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

要修改任何变量的值,无论是否为 static,必须赋值给它。