Ключевое слово static
- это тот, который имеет несколько значений в С++, которые я нахожу очень запутанными, и я никогда не смогу свести с ума то, как он должен работать.
Из того, что я понимаю, существует срок хранения static
, что означает, что он длится для жизни программы в случае глобального, но когда вы говорите о локальном, это означает, что он инициализируется нулем по умолчанию.
Стандарт С++ говорит об этом для членов данных класса с ключевым словом static
:
3.7.1 Статическая продолжительность хранения [basic.stc.static]
3 Ключевое слово static может использоваться для объявления локальной переменной со статической продолжительностью хранения.
4 Ключевое слово static, примененное к элементу данных класса в определении класса, дает время статического хранения элемента данных.
Что это означает с локальной переменной? Является ли это локальной переменной? Потому что также, когда вы объявляете функцию local как static
, что она инициализируется только один раз, при первом входе в эту функцию.
Он также говорит только о продолжительности хранения в отношении членов класса, а о том, что он не является специфичным для экземпляра, а также свойство static
no? Или это срок хранения?
Как насчет случая с static
и объемом файла? По умолчанию считается, что все глобальные переменные имеют статическую продолжительность хранения? Следующее (из раздела 3.7.1), по-видимому, указывает на следующее:
1 Все переменные, которые не имеют динамической продолжительности хранения, не имеют продолжительности хранения потоков и имеют не локальный статический период хранения. Хранилище для этих объектов должно длиться в течение всего времени программы (3.6.2, 3.6.3)
Как static
относится к привязке переменной?
Все это ключевое слово static
совершенно сбивает с толку, может ли кто-то прояснить различные варианты использования этого языка на английском языке, а также указать, когда инициализировать член класса static
?