Мой опыт говорит мне, что данный объект:
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() или любого другого конструктора?