以下是计数对象的简单情况:
struct A
{
static int count;
A () { ++ count; }
};
现在,其对象和
static
成员声明为:A obj; // comes 1st
int A::count = 5; // comes 2nd
g++ produces expected result。但是,由于
A::count
的定义在全局空间中的A
实例之一之后,所以它不是 undefined behavior 吗? 最佳答案
这取决于。
3.6.2
由于您具有使用常量表达式初始化的POD,因此它将被静态初始化,即在任何构造函数运行之前。更改任何这些条件,并且可能会发生意外的结果。
关于c++ - 在全局空间中在类的静态变量之前声明该类的对象是否定义明确?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6516557/