|
||||
|
8.8 Typedef – Определение Типа Описания, содержащие спецификатор_описания typedef, определяют идентификаторы, которы позднее могут использоваться так, как если бы они были ключевыми словами, именующими оновные или производные типы. typedef-имя: идентификатор Внутри области видимости описания, содержащего typedef, каждый идентификатор, возникающий как часть какого-либо опсателя, становится в этом месте синтаксически эквивалентным ключевому слову типа, которое именует тип, ассоциированный с идентификатором таким обрахом, как описывается в #8.4. Спецфикатор_описания typedef не может использоваться для члена класса. Имя класса или перечисления также является typedef-именем. Например, после typedef int MILES, *KLICKSP; struct complex (* double re, im; *); каждая из конструкций MILES distance; extern KLICKSP metricp; complex z, *zp; является допустимым описанием; distance имеет тип int, metricp имеет тип «указатель на int». typedef вводит не новые типы, но только синонимы для тпов, которые могли бы быть определены другим путем. Так в приведенном выше примере distance рассматривается как имеющая в точности тот же тип, что и любой другой int объект. Но описание класса вводит новый тип. Например: struct X (* int a; *); struct Y (* int a; *); X a1; Y a2; int a3; описывает три переменных трех различных типов. Описание вида описание_имени: сост идентификатор ; enum идентификатор ; специфицирует, что идентификатор является именем некотрого (возможно, еще не определенного) класса или перечислния. Такие описания позволяют описывать классы, ссылающихся друг на друга. Например: class vector; class matrix (* // ... friend vector operator*(matrix amp;, vector amp;); *); class vector (* // ... friend matrix operator*(matrix amp;, vector amp;); *); |
|
||