Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

R.10.4 Сводка правил области видимости





Теперь можно свести воедино правила областей видимости для программына С++. Эти правила одинаково применимы для всех имен (включаяимя-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) вычисляется в области видимостинаибольшего блока конструктора, для которого он задан. В частности,в нем можно использовать имена формальных параметров.







Дата добавления: 2015-09-04; просмотров: 330. Нарушение авторских прав; Мы поможем в написании вашей работы!




Обзор компонентов Multisim Компоненты – это основа любой схемы, это все элементы, из которых она состоит. Multisim оперирует с двумя категориями...


Композиция из абстрактных геометрических фигур Данная композиция состоит из линий, штриховки, абстрактных геометрических форм...


Важнейшие способы обработки и анализа рядов динамики Не во всех случаях эмпирические данные рядов динамики позволяют определить тенденцию изменения явления во времени...


ТЕОРЕТИЧЕСКАЯ МЕХАНИКА Статика является частью теоретической механики, изучающей условия, при ко­торых тело находится под действием заданной системы сил...

МЕТОДИКА ИЗУЧЕНИЯ МОРФЕМНОГО СОСТАВА СЛОВА В НАЧАЛЬНЫХ КЛАССАХ В практике речевого общения широко известен следующий факт: как взрослые...

СИНТАКСИЧЕСКАЯ РАБОТА В СИСТЕМЕ РАЗВИТИЯ РЕЧИ УЧАЩИХСЯ В языке различаются уровни — уровень слова (лексический), уровень словосочетания и предложения (синтаксический) и уровень Словосочетание в этом смысле может рассматриваться как переходное звено от лексического уровня к синтаксическому...

Плейотропное действие генов. Примеры. Плейотропное действие генов - это зависимость нескольких признаков от одного гена, то есть множественное действие одного гена...

Устройство рабочих органов мясорубки Независимо от марки мясорубки и её технических характеристик, все они имеют принципиально одинаковые устройства...

Ведение учета результатов боевой подготовки в роте и во взводе Содержание журнала учета боевой подготовки во взводе. Учет результатов боевой подготовки - есть отражение количественных и качественных показателей выполнения планов подготовки соединений...

Сравнительно-исторический метод в языкознании сравнительно-исторический метод в языкознании является одним из основных и представляет собой совокупность приёмов...

Studopedia.info - Студопедия - 2014-2026 год . (0.009 сек.) русская версия | украинская версия