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

R.5.1 Первичные выражения.

   


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

Первичными выражениями являются литералы, имена и имена, определенные с помощью операции разрешения области видимости ::.

           первичное-выражение:
                литерал
                this
                :: идентификатор
                :: имя-функции-операции
                :: уточненное-имя
                ( выражение )
                имя

Литерал является первичным выражением. Его тип определяется его видом ($$R.2.5).

В теле нестатической функции-члене ($$R.9.3) служебное слово this обозначает указатель на объект, к которому относится вызов функции. Служебное слово this нельзя использовать вне тела функции-члена класса.

Операция :: , за которой следует идентификатор или имя-операции-функции или уточненное-имя являются первичным выражением. Его тип задается описанием идентификатора, имени или имени-функции-операции. Результатом является идентификатор, имя или имя-функции-операции. Результат является адресом, если идентификатор является адресом. Идентификатор или имя-функции-операции должны иметь файловую область видимости. С помощью операции :: можно обращаться к типу, объекту, функции или элементу перечисления, даже если обозначающий их идентификатор является скрытым ($$R.3.2).

Выражение в скобках является первичным выражением, тип и значение которого идентичны им же у выражения без скобок. Наличие скобок не влияет на то, является выражение адресом или нет.

Понятие имя - это определенное первичное-выражение, которое может появляться только после . и -> ($$R.5.2.4):

           имя:
              идентификатор
              имя-функции-операции
              имя-функции-преобразования
              ~имя-класса
              уточненное-имя

Идентификатор есть имя, при условии что он описан надлежащим образом ($$R.7). Понятие имя-функции-операции описано в ($$R.13.4), а понятие имя-функции-преобразования в ($$R.12.3.2). Конструкция ~имя-класса обозначает деструктор ($$R.12.4).

           уточненное-имя:
                  уточняющее-имя-класса :: имя

Понятие уточняющее-имя-класса, за которым следует :: и имя члена этого класса ($$R.9.2), или члена базового по отношению к данному класса ($$R.10) является уточненное-имя. Его тип есть тип члена, а результат выражения есть этот член. Результат является адресом, если таковым является член. Имя класса может быть скрыто другим именем (не типа), в таком случае все равно имя класса доступно и его можно использовать. Если используется имя-класса::имя-класса или имя-класса::~имя-класса, оба понятия имя-класса должны обозначать один и тот же класс. С помощью такой записи обозначаются конструкторы ($$R.12.1) и деструкторы ($$R.12.4) соответственно. Можно использовать уточняющие имена неоднократно, например, N1::N2::N3::n, чтобы обозначать вложенные типы ($$R.9.7).


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


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

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