Что такое статические переменные?

Для чего разработаны статические переменные? Каково различие между статическим интервалом и интервалом?

10
задан lhj7362 7 October 2010 в 16:15
поделиться

3 ответа

Ключевое слово static имеет четыре отдельных использования, только два из которых тесно взаимосвязаны:

  • static в глобальной области и пространстве имён (применяется как к переменным, так и к функциям) означает внутреннюю связь
    • это заменяется на безымянные пространства имен и не связано с остальными
    • , в частности, другие, как правило, подразумевают некую уникальность, но внутренняя связь означает напротив : вы можете иметь много объектов с одним и тем же именем, при условии, что каждый из них имеет внутреннюю связь и у вас есть только один на единицу перевода
  • статические члены данных "разделены" между всеми экземплярами класса
    • это больше похоже на то, что они независимы от любого экземпляра класса
    • , который иногда группируется со статическими методами
  • , статические методы не "работают" на текущем экземпляре.
    • нет этого указателя; может вызываться без экземпляра
  • статические локальные переменные (в функциях), сохраняющиеся в области действия каждого вызова функции

Как статические члены данных, так и статические локальные переменные могут стать скрытыми глобальными состояниями, и их следует использовать осторожно.

Какие из двух переменных теперь тесно взаимосвязаны? Это не два члена класса - предупреждение о глобальном состоянии выдает его. Статическими членами данных можно считать статические локальные переменные, где все функции, к которым они принадлежат, являются методами класса, а не одной функции.

Я нашел много родственных вопросов , но, как ни странно, дубликатов нет.

34
ответ дан 3 December 2019 в 13:47
поделиться

Статические переменные инициализируются в сегменте данных (на x86; модифицируются соответствующим образом для других архитектур), а не на стеке. Они сохраняются в течение жизни программы, а не испаряются, как только выходят из-под контроля.

4
ответ дан 3 December 2019 в 13:47
поделиться

На статический член можно ссылаться без экземпляра.

См. раздел "Статические члены" здесь: http://www.cplusplus.com/doc/tutorial/classes2/

3
ответ дан 3 December 2019 в 13:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: