R.10.4 Сводка правил области видимости
R.10.4 Сводка правил области видимости
Теперь можно свести воедино правила областей видимости для программы на C++. Эти правила одинаково применимы для всех имен (включая имя-typedef (§R.7.1.3) и имя-класса (§R.9.1)) и в любом контексте, для которого они допустимы по синтаксису языка. Здесь рассматриваются только области видимости на лексическом уровне, вопросы связывания обсуждаются в §R.3.3. Понятие момента описания было введено в §R.3.2.
Всякое использование имени должно быть однозначным (не считая перегрузки) в области его видимости (§R.10.1.1). Правила доступа (§R.11) начинают действовать только тогда, когда имя можно однозначно найти в области его видимости. Только при условии, что права доступа к имени не нарушены, начинается проверка типа объекта, функции или элемента перечисления.
Имя, которое используется вне любой функции или класса, или перед которым стоит унарная операция разрешения области видимости :: (и которое не уточняется бинарной операцией :: или операциями -› или .), должно быть именем глобального объекта, или функции, или элемента перечисления, или типа.
Имя, задаваемое после X:: или obj., где obj типа X или типа ссылка на X, а также имя, задаваемое после ptr-›, где ptr типа указатель на X, должно быть именем члена класса X или членом базового по отношению к X класса. Помимо этого, в обращении ptr-›имя ptr может быть объектом класса Y, в котором есть функция operator-›(), описанная таким образом, что ptr-›operator() в конечном счете оказывается указателем на X (§R.13.4.6).
Имя, которое не уточняется одним из описанных выше способов, и, которое используется в функции, не являющейся членом класса, должно быть описано в том блоке, где оно используется, или в объемлющем блоке или должно быть глобальным. Описание локального имени скрывает описания того же имени в объемлющих блоках, а также его описания как глобального имени. В частности, перегрузка имени невозможна для имен в разных областях видимости (§R.13.4).
Имя, которое не уточняется одним из описанных выше способов, и, которое используется в функции, являющейся нестатическим членом класса X, должно быть описано или в том блоке, где оно используется, или в объемлющем блоке, и оно должно быть членом класса X, или членом базового по отношению к X класса, или это имя должно быть глобальным. Описание локальных имен скрывает описание этих же имен в объемлющих блоках, в членах класса этой функции и среди глобальных имен. Описание члена скрывает аналогичные описание с тем же именем в базовых классах и среди глобальных имен.
Имя, которое не уточняется одним из описанных выше способов, и, которое используется в статической функции-члене класса X, должно быть описано или в том блоке, где оно используется, или в объемлющем блоке, и должно быть статическим членом класса X, или базового по отношению к X класса, или оно должно быть глобальным именем.
Имя формального параметра функции, заданное при ее определении (§R.8.3), принадлежит области видимости, совпадающей с наибольшим блоком функции (в частности, является локальным именем). Имя формального параметра функции, заданное в ее описании (§R.8.2.5), а не определении, принадлежит локальной области видимости, которая исчезает сразу же после описания функции. Стандартные значения параметров находятся в области видимости, определяемой в момент описания (§R.3.2) формальных параметров функции; в них не должны использоваться локальные переменные или нестатические члены класса, и они вычисляются при каждом вызове функции (§R.8.2.6).
Инициализатор-ctor (§R.12.6.2) вычисляется в области видимости наибольшего блока конструктора, для которого он задан. В частности, в нем можно использовать имена формальных параметров.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
9.4.3.5. Сводка fcntl()
9.4.3.5. Сводка fcntl() Сводка для системного вызова fcntl() приведена в табл. 9.5.Таблица 9.5. Сводка fcntl() Значение cmd Значение arg Возвращает F_DUPFD Наименьший новый дескриптор Дублирует аргумент fd F_GETFD Получает флаги дескриптора файла (close-on-exec) F_SETFD Новое значение
13. Область видимости
13. Область видимости Областью при видимости называется часть текста программы, в которой может быть использован определенный объект. Объект является видимым в блоке или в исходном файле, когда в данном блоке или файле определены имя и тип объекта. Объект может быть
R.17 Приложение A: Сводка грамматики
R.17 Приложение A: Сводка грамматики Это приложение не относится к справочному руководству языка и не является определением конструкций C++.Оно только должно служить более полному пониманию С++. Нельзя рассматривать его как точное определение языка, так как описанная здесь
Обзор области видимости
Обзор области видимости Каждая VBA-процедура имеет свою вполне определенную область видимости. Область видимости определяет, из какой части программы вы можете вызвать эту процедуру, а из какой - нет. Можно сказать, что область видимости отвечает за то, какая часть
Задание области видимости процедуры
Задание области видимости процедуры Чтобы задать область видимости процедуры, нужно в начале объявления процедуры просто напечатать ключевое слово Public или Private. Взгляните на следующие примеры:Public Sub IKr.eadYouO...( операторы процедуры)End SubPrivate Function IKneedYou().. . (операторы
Задание области видимости переменной
Задание области видимости переменной Область видимости переменной (т.е. та часть программы, в рамках которой данная переменная доступна) зависит от следующих двух взаимосвязанных факторов:* места объявления переменной (либо внутри процедуры, либо в разделе объявлений
8.5.2. Оператор разрешения области видимости
8.5.2. Оператор разрешения области видимости Имя члена пользовательского пространства дополняется поставленным спереди именем этого пространства и оператором разрешения области видимости (::). Использование неквалифицированного члена, например matrix, является ошибкой.
13.9.1. Разрешение имен в области видимости класса
13.9.1. Разрешение имен в области видимости класса Конечно, имена, используемые в области видимости класса, не обязаны быть именами членов класса. В процессе разрешения в этой области ведется поиск имен, объявленных и в других областях. Если имя, употребленное в области
13.10.1. Разрешение имен в области видимости вложенного класса
13.10.1. Разрешение имен в области видимости вложенного класса Посмотрим, как разрешаются имена в определениях вложенного класса и его членов.Имя, встречающееся в определении вложенного класса (кроме тех, которые употребляются во встроенных функциях-членах и аргументах по
Приложение В. Сводка рекомендаций
Приложение В. Сводка рекомендаций В этом приложении сведены наши советы о том, что следует делать, чего не следует, а о чем стоит подумать. Мы решили включить его, потому что иногда разработчику во время написания программы хочется не читать всю книгу, а просто вспомнить,
3.2 Краткая сводка операций
3.2 Краткая сводка операций Операции С++ подробно и систематически описываются в #с. 7; прочитайте, пожалуйста, этот раздел. Здесь же приводится операция краткая сводка и некоторые примеры. После каждой операции приведено одно или более ее общеупотребительных наваний и
3.3 Сводка операторов
3.3 Сводка операторов Операторы С++ систематически и полностью изложены в #с.9, прочитайте, пожалуйста, этот раздел. А здесь приводится краткая сводка и некоторые примеры.Синтаксис оператора – оператор: описание (*список_операторов opt*) выражение optif оператор if ( выражение )
15.2 Сводка Несовместимостей
15.2 Сводка Несовместимостей Большинство конструкций C допустимы в С++ без изменения их смысла. Исключения из этого следующие:Программы, использующие одно из новых ключевых словclass const delete friend inline new operator overload public signed this virtual volatileкак идентификаторы, недопустимы.Описание
19.5. Списки видимости
19.5. Списки видимости Иногда нужно, чтобы часть пользователей из вашего списка контактов «видела» вас, а остальные думали, что вас нет в сети. Это возможно осуществить в ICQ. Вам нужно лишь сформировать списки «видимости». Откройте окно Мои настройки (Главное, Настройки и