#include <iostream>
class a {
public:
static int num;
};
class b {
public:
static int num;
};
int a::num = b::num;
int b::num = 6;
int main(){
std::cout << a::num << std::endl;
return 0;
}
上面显示
6
。我的问题是,自从执行
a::num = b::num
以来,这怎么可能呢?b::num
还没有任何值(value)。 最佳答案
您将在此示例中看到不同initialization阶段的交互。初始化按以下顺序进行:
a::num
是zero-initialized,是静态的非本地变量。 b::num
在constant initialization阶段进行初始化,因为其初始值设定项是常量表达式6
。 a::num
从不是constant expression的表达式b::num
初始化。此时,b::num
已被初始化为6。请注意,如果编译器可以保持与上述序列相同的效果,则可以静态初始化
a::num
。关于c++ - 在C++类中初始化彼此相等的静态值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60173266/