Справочное руководство по C++ | страница 41



Если спецификация-типа отсутствует в описании, она считается заданной как int.

>имя-простого-типа:

> полное-имя-класса

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

> char

> short

> int

> long

> signed

> unsigned

> float

> double

> void

Вместе с int нельзя задавать более одного служебного слова long или short. Они могут использоваться и поодиночке, тогда считается, что тип есть int. Служебное слово long может появиться вместе с double. Вместе с char, short, int или long нельзя задавать более одного служебного слова signed или unsigned. Они могут использоваться и поодиночке, тогда считается, что тип есть int. Спецификация signed указывает, что объекты типа char и битовые поля являются знаковыми, для других целочисленных типов эта спецификация избыточна.

Конструкции спецификация-класса и спецификация-перечисления определяются в §R.9 и §R.7.2 соответственно.

>спецификация-сложного-типа:

> служебное-слово-класса имя-класса

> служебное-слово-класса идентификатор

>служебное-слово-класса:

> class

> struct

> union

Если задан идентификатор, спецификация-сложного-типа описывает его как имя-класса (см. §R.9.1).

Если определено имя, которое описывается с помощью спецификации union, то оно должно быть определено как объединение. Если определено имя, которое описывается с помощью спецификации class, то оно должно быть определено с помощью спецификаций class или struct. Если определено имя, которое описывается с помощью спецификации struct, оно должно быть определено с помощью спецификации class или struct. Имена вложенных типов (§R.9.7) должны уточняться именем объемлющего класса:

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

> имя-typedef

> имя-класса :: уточненное-имя-типа

>полное-имя-класса:

> уточненное-имя-класса

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

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

> имя-класса

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

Имя, уточненное именем-класса должно быть типом, определенным в этом классе или в базовом классе этого класса. Как обычно, имя, описанное в производном классе, делает невидимыми члены с этим именем из базовых классов (см. §R.3.2).

R.7.2 Описание перечисления

Перечисление является отдельным целочисленным типом (§R.3.6.1) с константами-именами. Его имя в своей области видимости становится конструкцией имя-перечисления, т.е. служит зарезервированным словом.

>имя-перечисления:

> идентификатор

>спецификация-перечисления:

> enum идентификатор >opt { список-перечисления }

>список-перечисления:

> элемент-перечисления

> список-перечисления, элемент-перечисления

>элемент-перечисления:

> идентификатор