Ответ 1
Ключевое слово static
имеет четыре отдельных применения, только два из которых тесно связаны:
- static в глобальной области и пространстве имен (применяется к обеим переменным и функциям) означает внутреннюю привязку
- это заменяется на неназванные пространства имен и не имеет отношения к остальным
- в частности, другие склонны подразумевать какую-то уникальность, но внутренняя связь означает противоположность: у вас может быть много объектов с тем же именем, если у каждого есть внутренняя связь, и у вас есть только одна единица перевода
- статические члены данных "разделяются" между всеми экземплярами класса
- это больше похоже на то, что они не зависят от экземпляра класса
- это иногда группируется со статическими методами
- статические методы не "работают" с текущим экземпляром
- нет этого указателя; может вызывать без экземпляра
- статические локальные переменные (в функциях) сохраняются в рамках каждого вызова функции
Оба статических элемента данных и статические локальные переменные могут стать скрытыми глобальными состояниями и должны использоваться осторожно.
Теперь, какие из двух тесно связаны? Это не два члена класса: предупреждение о глобальном состоянии дает его. Вы можете рассматривать статические члены данных как статические локальные переменные, в которых функции, к которым они принадлежат, являются всеми методами класса, а не одной функцией.
Я нашел много связанных вопросов, но, что удивительно, нет дубликатов.