static
при применении к локальной переменной дает эту переменную статическая продолжительность хранения .Это означает, что время жизни justAbool
длится до конца программы, а не до конца вызова функции.Область действия остается той же, доступ к ней возможен только по имени в функции после появления объявления.
justAbool
будет инициализирован (используя прилагаемый инициализатор = false
) при первом запуске функции.называется.После этого он сохранит свое предыдущее значение и не будет повторно инициализирован при повторном вызове функции.
Ниже приведены некоторые более подробные сведения о продолжительности и сроке хранения со ссылками на стандарт.
Еслиобъект имеет статическая продолжительность хранения , это означает, что хранение объекта продолжается в течение всей программы (от начала до конца).(3.7.1 [basic.stc.static])
Поскольку bool
является типом без нетривиального конструктора, его время жизни отражает его время хранения, то есть он живет от начала до концапрограммы.(3.8 [basic.life])
Все объекты с статической продолжительностью хранения (включая локальные объекты) инициализируются нулями перед любой другой инициализацией.(6.7 / 4 [stmt.decl]) [Для локальных объектов с инициализатором это довольно академично, потому что нет возможности прочитать их значение до того, как их объявление достигнуто.]
Локальные объекты типа POD с статическая длительность хранения , инициализированная константами-выражениями , инициализируется до ввода их блока, в противном случае локальные объекты с статической длительностью хранения инициализируются, когда управление проходит через их объявление.(Снова 6.7 / 4)
Реализация разрешает, но не требуется, для выполнения ранней инициализации в некоторых ситуациях.