Мой опыт говорит мне, что данный объект:
class Object
{
private:
static int array[];
public:
Object(int id);
};
int Object::array[] = { 2937, 892 };
Object::Object(int id)
{
// do something
}
Инициализация array произойдет до вызова любого метода для Object или вызова любого метода для любого другого объекта в программе, независимо от того, объявлен ли этот объект static или нет.
По сути, я спрашиваю, не согласен ли кто-нибудь с тем, что статические простые типы C (не объекты), такие как char, short, int и long (и структуры без конструкторов, состоящие из этих типов), инициализируются, когда исполняемый файл загружается в память, перед вызовом main() или любого другого конструктора?