Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Справочное руководство по C++.doc
Скачиваний:
0
Добавлен:
03.01.2020
Размер:
2.03 Mб
Скачать

R.8 Описатели

Список-описателей, фигурирующий в описании, - это последовательность

через запятую описателей, каждый из которых может иметь

инициализатор.

список-описаний:

описатель-с-инициализатором

список-описаний , описатель-с-инициализатором

описатель-с-инициализатором:

описатель инициализатор opt

Описание состоит из двух частей: спецификации (спецификация-описания;

см. $$R.7.1) и описателей (список-описателей). Спецификации задают

основной тип, класс памяти или другие свойства описываемых объектов

и функций. Описатели задают имя этих объектов и функций, а также,

возможно, изменяют тип с помощью таких операций, как * (указатель на)

и () (функция возвращающая). В описателе также можно задать начальные

значения, инициализация обсуждается в $$R.8.4 и $$R.12.6.

Описатели имеют такой синтаксис:

описатель:

имя-в-описателе

операция-ptr описатель

описатель (список-описаний-параметров) список-спецификаций-cv opt

описатель [ выражение-константа opt]

( описатель )

операция-ptr:

* список-спецификаций-cv opt

& список-спецификаций-cv opt

полное-имя-класса :: * список-спецификаций-cv opt

список-спецификаций-cv:

const

volatile

имя-в-описателе:

имя

имя-класса

~имя-класса

имя-typedef

уточненное-имя-типа

Конструкция имя-класса имеет определенное назначение при описании

класса с этим именем, она же используется как уточнение в операции ::

для разрешения коллизий в области видимости ($$R.12.1, $$R.12.4).

R.8.1 Имена типов

Имя типа необходимо указывать при задании операции явного

преобразования типа или в качестве параметра в операциях sizeof

или new. Для этого служит конструкция имя-типа, которая синтаксически

эквивалентна описанию объекта или функции этого типа, в котором

отсутствует имя объекта или функции.

имя-типа:

список-спецификаций-типа абстрактный-описатель opt

список-спецификаций-типа:

спецификация-типа список-спецификаций-типа

абстрактный-описатель:

операция-ptr абстрактный-описатель opt

абстрактный-описатель opt ( список-описаний-параметров ) список-спецификаций cv opt

абстрактный-описатель opt [ выражение-константа opt ]

( абстрактный-описатель )

Можно однозначно указать, в каком месте абстрактного-описателя

нужно добавить идентификатор, чтобы конструкция стала описателем,

допустимым в описании. Тогда поименованный тип будет тем же, что и

тип гипотетического идентификатора. Например, описания

int // int i

int * // int *pi

int *[3] // int *p[3]

int (*)[3] // int (*p3i)[3]

int *() // int *f()

int (*)(double) // int (*pf)(double)

задают соответственно такие типы: "целое", "указатель на целое",

"массив из 3 указателей на целое", "указатель на массив из 3 целых",

"функция без параметров, возвращающая указатель на целое",

"указатель на функцию с параметром типа double, возвращающую целое".