В чем разница между глобальным идентификатором static
и глобальным идентификатором static
в С++?
В чем разница между статическим глобальным и нестатистическим глобальным идентификатором в С++?
Ответ 1
Статический ограничивает область действия переменной той же самой единиц перевода.
статическая глобальная переменная имеет внутреннюю привязку.
нестатическая глобальная переменная имеет внешнюю привязку.
Хорошее чтение:
Что такое внешняя связь и внутренняя связь?
Ответ 2
Глобальная переменная static
доступна только в блоке трансляции (то есть в исходном файле), в которой находится переменная. Нестатическая глобальная переменная может ссылаться на другие исходные файлы.
Ответ 3
Если вы не знаете, в чем разница, правильный ответ, вероятно, будет еще более запутанным для вас. Короче говоря, static
класса не имеет значения для статики в области файлов. Статика класса эксиально идентична регулярным переменным, но на них нужно будет ссылаться, префикс их с именем класса. Statics в области файлов являются регулярными переменными, которые являются локальными только для файла. Чтобы понять, что это означает, попробуйте добавить две переменные с тем же именем в один проект. Вы получите ошибки компоновщика, потому что есть несколько одинаковых символов. Ставя символы, вы избежите того, что проблемы и имя переменной не будут доступны извне файла.
Ответ 4
Глобальные нестатические переменные доступны из других файлов, тогда как статические глобальные переменные не являются