以下是統計對象的簡單情況:它在全局空間中的靜態變量之前聲明類的對象是否定義良好?
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
實例之一之後,所以不應該是未定義的行爲?
POD是零初始化的。靜態的前向聲明確實應該是前向的,但它可能取決於聲明A的範圍是全局範圍,命名空間等在事物初始化方面有重大差異。 – AJG85