В чем разница между статическим глобальным и нестатическим глобальным идентификатором в C ++?

В чем разница между static глобальный и неstatic глобальный идентификатор в C ++?

29

Решение

Static ограничивает область действия переменной блок перевода.
статический глобальный переменная имеет внутренняя связь.
нестатический глобальный переменная имеет внешняя связь.

Хорошо для чтения:
Что такое внешняя связь и внутренняя связь?

31

Другие решения

Глобальный static переменная доступна только в блок перевода (т. е. исходный файл), в которой находится переменная. На нестатическую глобальную переменную можно ссылаться из других исходных файлов.

8

Если вы не знаете, в чем разница, правильный ответ, вероятно, будет еще более запутанным для вас. Короче, staticКлассы не предназначены для статики в области видимости файла. Статика класса по существу идентична обычным переменным, но на них нужно будет ссылаться, добавляя к ним префикс имени класса. Статика в области видимости файла — это обычные переменные, которые являются локальными только для файла. Чтобы понять, что это значит, попробуйте добавить две переменные с одинаковым именем в один проект. Вы получите ошибки компоновщика, потому что есть несколько идентичных символов. Делая символы статичными, вы избежите проблем, и имя переменной не будет доступно из-за пределов файла.

3

Глобальные Нестатические переменные доступны из других файлов, тогда как статические глобальные переменные не доступны

2
По вопросам рекламы [email protected]