一、 问题现状
最近发现一个Bug,关于两个全局静态变量间的初始化和相互依赖。可以简单描述为:
- 有两个全局变量a和b,类型分别为ClassA和ClassB
- 在ClassA类型的构造函数中,使用了全局变量b
- 在实际使用过程中,a和b的初始化时机不确定,导致a随机出现问题
#include <iostream>
class ClassA
{
public:
ClassA();
private:
int varA = 0;
int varA2 = 0;
};
class ClassB
{
public:
ClassB(int v);
int GetInt();
private:
int varB = 0;
};
static ClassA a;
static ClassB b(5);
static int c = 8;
ClassA::ClassA() { varA = b.GetInt(); varA2 = c; }
ClassB::ClassB(int v) { varB = v; }
int ClassB::GetInt() { return varB; }
int main()
{
std::cout << "Hello World!\n";
}
2026/1/8大约 2 分钟
