Каждое имя, обозначающее объект, имеет некоторую область видимости (действия), в которой это имя объявлено и может использоваться. В стандарте (см. п. 3.3 в [1]) определены следующие области видимости (по возрастанию «объема»):
• Оператор (см. п. п. 3.3.2 в [1]). Идентификатор, объявленный в условии операторов i f, swi tch, whi le или в операторе for, действителен только до конца тела оператора.
• Прототип (см. п. п. 3.3.3 в [1]). Идентификаторы, указанные в списке параметров прототипа функции, имеют областью действия только прототип функции.
• Блок (см. п. п. 3.3.2 в [1]). Имена, объявленные в блоке, являются локальными в этом блоке и не видимы вне его. Параметры, объявленные в заголовке функции, видимы до конца блока определения и локальны в этом блоке1. Если тело функции является функциональным блоком try, то область видимости параметров продолжается до последней секции-ловушки. Параметр, объявленный в блоке catch, локален в блоке данного обработчика.
• Функция (см. п. п. 3.3.4 в [1]). Только метки имеют такую область действия. В одной функции все метки должны быть разными.
• Класс (см. п. п. 3.3.6 в [1]). Все имена, объявленные в классе, видимы внутри него без ограничений независимо от модификатора доступа. Только дружественные классы и функции имеют неограниченный доступ к элементам данного класса. Вне класса доступные имена (это зависит от модификатора доступа) могут быть использованы только с квалификаторами (.,::*/->).
• Файл. Имена объектов, определенных вне указанных выше областей видимости, видимы в пределах единицы трансляции. За счет объявлений такие имена можно использовать и в других единицах трансляции. С помощью ключевого слова static видимость можно ограничить данной единицей трансляции.
• Пространство имен (см. п. п. 3.3.5 в [1]). С++ позволяет явно задать область видимости имен, присвоив области видимости некоторое имя.
Имена в одной области видимости не должны быть одинаковыми, но в разных областях они могут совпадать.
Опубликовал Kest
February 15 2014 10:00:32 ·
0 Комментариев ·
2959 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.