以下是计数对象的简单情况:

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/

10-11 23:17
查看更多