Каждый программный объект имеет область действия, которая определяется видом
и местом его объявления. Существуют следующие области действия: блок,
файл, функция, прототип функции, класс и поименованная область.
Блок.Идентификаторы, описанные внутри блока, являются локальными. Область
действия идентификатора начинается в точке определения и заканчивается
в конце блока, видимость — в пределах блока и внутренних блоков, время
жизни — до выхода из блока. После выхода из блока память освобождается.
Файл.Идентификаторы, описанные вне любого блока, функции, класса или пространства
имен, имеют глобальную видимость и постоянное время жизни и мо-
1ут использоваться с момента их определения.
Функция.Единственными идентификаторами, имеющими такую область действия,
являются метки операторов. В одной функции все метки должны различаться,
но могут совпадать с метками других функций.
Прототип функции.Идентификаторы, указанные в списке параметров прототипа
(объявления) функции, имеют областью действия только прототип функции.
Класс.Элементы структур, объединений и классов (за исключением статических
элементов) являются видимыми лишь в пределах класса. Они образуются
при создании переменной указанного типа и разрушаются при ее уничтожении.
Поименованная область.C++ позволяет явным образом задать область определения
имен как часть глобальной области с помощью оператора namespace.
Напомгно, что область видимости совпадает с областью действия за исключением
ситуации, когда во вложенном блоке описана переменная с таким же именем.
В этом случае внешняя переменная во вложенном блоке невидима, хотя он и входит
в ее область действия. Тем не менее к этой переменной, если она глобальная,
можно обратиться, используя операцию доступа к области видимости ::. Способ
обратиться к скрытой локальной переменной отсутствует.
В каждой области действия различают так называемые пространства имен. Пространство
имен — область, в пределах которой идентификатор должен быть уникальным.
В разных пространствах имена могут совпадать, поскольку разрешение
ссылок осуществляется по контексту идентификатора в программе__