R Справочное руководство по С++

R.3.2 Область видимости.

   


Назад  |  Вперёд

Существует четыре области видимости: локальная, функция, файл и класс.

Специальные соглашения действуют на имена, введенные при описании параметров функции ($$R.8.2.5) и в описаниях friend ($$R.11.4).

Имя может быть скрыто явным описанием того же имени в объемлющем блоке или классе. Скрытое имя члена класса все-таки можно использовать, если оно предваряется именем класса, к которому применена операция :: ($$R.4.1, $$R.9.4, $$R.10). Скрытое имя объекта, функции, типа или элемента перечисления с файловой областью видимости можно использовать, если оно предваряется унарной операцией :: ($$R.5.1). В дополнении к этому, имя класса ($$R.9.1) может быть скрыто именем объекта, функции или элемента перечисления, имеющего ту же область видимости. Если класс и объект, или функция, или элемент перечисления описаны (в любом порядке) с одинаковым именем в одной области видимости, то имя класса становится скрытым. Имя класса, скрытое в локальной области видимости или в области видимости класса именем объекта, функции или элемента перечисления, все-таки можно использовать, если предварить его подходящей спецификацией class, struct или union ($$R.7.1.6). Аналогично, скрытое имя элемента перечисления можно использовать, если предварить его спецификацией типа enum ($$R.7.1.6). В $$R.10.4 приводится сводка правил области видимости. Моментом описания имени считается момент завершения описателя имени ($$R.8), предшествующей части инициализации (если она есть). Например,

           int x = 12;
           { int x = x; }

Здесь второе x инициализируется своим собственным (неопределенным) значением.

Моментом описания элемента перечисления считается момент сразу после появления его идентификатора, например:

           enum { x = x };

Здесь элемент перечисления x опять инициализируется своим собственным (неопределенным) значением.


Назад  |  Вперёд


OtDiatlovaOU
К началу книги

Оформление и дизайн книги OtDiatlovaOU.
Вся книга, архив.