C++.Бархатный путь



         

Typedef-объявление - часть 3


Рассмотрим ещё один пример. typedef long double NewType; /* Используем спецификатор для ввода в программу нового имени типа. */ ::::: NewType MyFloatVal;

Новое имя для обозначения типа введено…

Новое имя ранее уже поименованного типа называют ОПИСАННЫМ ИМЕНЕМ ТИПА. Именно таким образом и назывался (так выглядел) соответствующий нетерминальный символ во множестве БНФ, связанных с typedef-объявлением.

Описанное имя типа может заменять прежнее имя типа везде, где это возможно, поскольку объявления с описанным именем при трансляции заменяется первоначальным объявлением: long double MyFloatVal;

В ряде случаев описанное имя типа может оказаться единственным именем для обозначения безымянного типа (об этом позже).

В области действия объявления имени типа (typedef-объявления), идентификатор NewType (он является спецификатором типа) становится синонимом другого спецификатора типа - конструкции long double. Иногда подобным образом вводимый синоним называют замещающим идентификатором.

Использование спецификатора typedef подчиняется следующим правилам (ничто не даётся даром):

1. Спецификатор typedef может переопределять имя как имя типа, даже если это имя само уже было ранее введено typedef спецификатором: typedef int I; typedef I I;

2. Спецификатор typedef не может переопределять имя типа, объявленное в одной и той же области действия, и замещающее имя другого типа. typedef int I; typedef float I; // Ошибка: повторное описание…

3. На имена, введённые в программу с помощью спецификатора typedef, распространяются правила области действия, за исключением разрешения на многократное использование имени (правило 1.).




Содержание  Назад  Вперед