К спецификации типа относятся: спецификация-типа: имя-простого-типа спецификация-класса спецификация-перечисления спецификация-сложного-типа:: имя-класса const volatile При описании объекта служебные слова const и volatile можно добавитьк любой законной спецификации-типа. Во всех других случаях в описанииможет присутствовать не более одной спецификации-типа. Объект соспецификацией const можно инициализировать, но его значение недолжно изменяться в дальнейшем. Объект со спецификацией const, еслитолько он не был явно описан как extern, не подлежит внешнемусвязыванию и должен инициализироваться ($$R.8.4, $$R.12.1). Целоесо спецификацией const, инициализированное выражением-константой,может использоваться в выражении-константе ($$R.5.19). Каждыйэлемент массива со спецификацией const имеет ту же спецификацию,а каждый нестатический член, не являющийся функцией, из объекта классасо спецификацией const сам считается const ($$R.9.3.1). Объект типабез конструктора или деструктора, который имеет спецификацию const,может быть помещен в память, доступную только по чтению. Попытказаписи в любую часть такого объекта или приведет к особой адреснойситуации, или пройдет бесследно, как если бы объект не имелспецификации const. Не существует не зависящего от реализации объяснения объектов соспецификацией volatile. Она служит подсказкой транслятору избегатьслишком активной оптимизации, связанной с этим объектом, посколькузначение объекта может изменяться способами, скрытыми оттранслятора. Каждый элемент массива со спецификацией volatileимеет ту же спецификацию и каждый нестатический член, не являющийсяфункцией, из объекта класса со спецификацией volatile сам считаетсяvolatile ($$R.9.3.1). Если спецификация-типа отсутствует в описании, она считаетсязаданной как 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).