Jump to content

Статический (ключевое слово)

В таких языках программирования , как C , C++ , Objective-C и Java , static — это зарезервированное слово, управляющее как временем жизни (как статической переменной ), так и видимостью (в зависимости от связи ). Эффект ключевого слова варьируется в зависимости от особенностей конкретного языка программирования.

В C и C++ эффект static Ключевое слово зависит от того, где встречается объявление.

static может выступать в качестве класса хранения (не путать с классами объектно-ориентированного программирования ), как и extern, auto и register (которые также являются зарезервированными словами). Каждая переменная и функция имеют один из этих классов хранения; если в объявлении не указан класс хранения, используется контекстно-зависимое значение по умолчанию:

  • extern для всех объявлений верхнего уровня в исходном файле,
  • auto для переменных, объявленных в телах функций.
Класс хранения Продолжительность жизни Видимость
externвыполнение программы внешний (вся программа)
staticвыполнение программы внутренний ( только единица перевода )
auto, registerвыполнение функции (никто)

В этих языках термин «статическая переменная» имеет два значения, которые легко спутать:

  1. Переменная с тем же временем жизни, что и программа, как описано выше (независимая от языка); или
  2. (Специально для семейства C) Переменная, объявленная с классом хранения. static.

Переменные с классом хранения extern, которые включают переменные, объявленные на верхнем уровне без явного класса хранения, являются static в первом значении, но не во втором.

Статическая глобальная переменная

[ редактировать ]

Переменная, объявленная как static на верхнем уровне исходного файла (вне каких-либо определений функций) виден только во всем этом файле (« область файла », также известная как « внутренняя связь »). В этом случае ключевое слово static известен как « спецификатор доступа ».

Статическая функция

[ редактировать ]

Аналогично, статическая функция – функция, объявленная как static на верхнем уровне исходного файла (вне каких-либо определений классов) – виден только во всем этом файле (« область файла », также известная как « внутренняя связь »).

Статические локальные переменные

[ редактировать ]

Переменные объявлены как static внутри функции распределяются статически, поэтому сохраняют свое местоположение в памяти на протяжении всего выполнения программы, имея при этом ту же область видимости, что и автоматические локальные переменные ( auto и register), что означает, что они остаются локальными для функции. Следовательно, какие бы значения функция ни помещала в свои статические локальные переменные во время одного вызова, они все равно будут присутствовать при повторном вызове функции.

специфичный для C++

[ редактировать ]

Статические переменные-члены

[ редактировать ]

В C++ переменные-члены, объявленные как static внутри определений классов являются переменные класса (общие для всех экземпляров класса, в отличие от переменных экземпляра ).

Статическая функция-член

[ редактировать ]

Аналогично, статическая функция-член — функция-член, объявленная как static внутри определения класса – должно относиться ко всем экземплярам класса, а не к какому-либо конкретному экземпляру. Функция-член, объявленная как static может быть вызван без создания экземпляра класса.

Это ключевое слово static означает, что этот метод теперь является методом класса ; он будет вызываться через имя класса, а не через объект.

Статический метод обычно называется <classname>.methodname(), тогда как метод экземпляра обычно вызывается как <objectname>.methodname().

См. также

[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 846f2718b8f5eccac237c9afd7c91714__1701338340
URL1:https://arc.ask3.ru/arc/aa/84/14/846f2718b8f5eccac237c9afd7c91714.html
Заголовок, (Title) документа по адресу, URL1:
Static (keyword) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)