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

Тождественные и совместимые типы

Два типа могут быть тождественными, и эта тождественность

(идентичность) является обязательной в некоторых контекстах. В

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

тимы по присваиванию. Два типа являются тождественными, если они

описаны с одним идентификатором типа, или если их определения ис-

пользуют один и тот же идентификатор типа.

Тождественность типов

Тождественность типов требуется только для переменных факти-

ческих и формальных параметров при вызове процедур и функций.

Два типа, скажем T1 и T2, являются тождественными, если яв-

ляется истинным одно из следующих утверждений: T1 и T2 представ-

ляю собой один и тот же идентификатор типа; T1 описан как эквива-

лентный типу, тождественному T2.

Второе условие означает, что T1 не обязательно должен быть

описан как непосредственно эквивалентный T2. Следующие описания

типов:

T1 = integer;

T2 = T1;

T3 = integer;

T4 = T2;

означают, что T1, T2, T3, T4 и integer являются тождественными

типами. Следующие описания типов:

T5 = set of integer;

T6 = set of integer;

не определяют T5 и T6 как тождественные, поскольку set of integer

не является идентификатором типа. Две переменные, описанные в од-

ном и том же описании, например:

V1, V2: set of integer;

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

Описания:

V1: set of integer;

V2: set of integer;

V3: integer;

V4: integer;

означают, что V3 и V4 имеют тождественный тип, а V1 и V2 - нет.

Совместимость типов

Иногда, например, в выражениях и операциях сравнения, требу-

ется совместимость типов. Совместимость типов, кроме того, явля-

ется важной предпосылкой для совместимости по присваиванию.

Совместимость типов имеет место, если выполняется по крайней

мере одно из следующих условий:

* Оба типа являются одинаковыми.

* Оба типа являются вещественными типами.

* Оба типа являются целочисленными.

* Один тип является поддиапазоном другого.

* Оба типа являются отрезками одного и того же основного ти-

па.

* Оба типа являются множественными типами с совместимыми ба-

зовыми типами.

* Один тип является строковым типом, а другой - строковым

типом, упакованным строковым типом или типом PChar;

* Один тип - это тип Pointer, а другой - любой ссылочный

тип.

* Один тип является типом PChar, а другой - символьным мас-

сивом с нулевой базой вида array[0..X] of Char (это дейс-

твует только при разрешении директивой {$X+} расширенного

синтаксиса).

* Оба типа являются указателями идентичных типов (это дейс-

твует только при разрешении указателя с проверкой типа ди-

рективой {$X+}).

* Оба типа являются процедурными с идентичными типами ре-

зультатов, одинаковым числом параметров и соответствием

между параметрами.

Соседние файлы в предмете Программирование на Pascal