C++ Когда именно инициализируется статика области функции?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 C++ Когда именно инициализируется статика области функции?

Сообщение Anonymous »


Как правило, статические переменные области функции инициализируются, когда элемент управления впервые достигает объявления переменной (например, при первом вызове функции), но при некоторых обстоятельствах они могут быть инициализированы раньше. При каких обстоятельствах мы можем гарантировать, что конструктор статической переменной области функции будет горячим вызовом до первого вызова функции?

В частности, у меня есть такой пример:

(На богомолте)

// а.ч недействительный initA(); недействительный setA (интервал val); интервал getA(); // a.cpp #include "аа" статический int а; недействительный initA() { а = 1; } void setA(int val) { а = значение; } интервал getA() { вернуть а; } // ч.ч класс Б { публика: Б(); }; // b.cpp #include "б.ч" #include "аа" Б::Б() { наборА(12); } // main.cpp #include "аа" #include "б.ч" #include недействительными local_statics(); интервал основной() { инициалА(); // устанавливает статическую область пространства имен int `a` в 1 локальная_статика(); std::cout
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»