Эквивалентность и совместимость типов
Эквивалентность и совместимость типов
Совпадение типов
Говорят, что типы T1 и T2 совпадают, если они имеют одно имя либо же определены в секции type в виде T1 = T2. Таким образом, в описаниях
type
IntArray = array [1..10] of integer;
IntArrayCopy = IntArray;
var
a1: IntArray;
a2: IntArrayCopy;
b1,c1: array [1..15] of integer;
b2: array [1..15] of integer;
переменные a1 и a2 и переменные b1 и c1 имеют один и тот же тип, а переменные b1 и b2 - разные типы.
Эквивалентность типов
Говорят, что типы T1 и T2 эквивалентны, если выполняется одно из следующих условий:
* T1 и T2 совпадают
* T1 и T2 - динамические массивы с совпадающими типами элементов
* T1 и T2 - указатели с совпадающими базовыми типами
* T1 и T2 - множества с совпадающими базовыми типами
* T1 и T2 - процедурные типы с совпадающим списком формальных параметров (и типом возвращаемого значения - для функций)
Если типы эквивалентны только если их имена совпадают, то говорят, что имеет место именная эквивалентность типов. Если типы эквивалентны если они совпадают по структуре, то говорят, что имеет место структурная эквивалентность типов. Таким образом, в PascalABC.NET имеет место именная эквивалентность для всех типов, кроме динамических массивов, множеств, типизированных указателей и процедурных типов, для которых имеет место структурная эквивалентность типов.
Только если типы T1 и T2 эквивалентны, фактический параметр типа T1 может быть подставлен вместо формального параметра-переменной типа T2.
Совместимость типов
Говорят, что типы T1 и T2 совместимы, если выполняется одно из следующих условий:
* T1 и T2 эквивалентны
* T1 и T2 принадлежат к целым типам
* T1 и T2 принадлежат к вещественным типам
* Один из типов - поддиапазон другого или оба - поддиапазоны некоторого типа
* T1 и T2 - множества с совместимыми базовыми типами
Совместимость типов по присваиванию
Говорят, что значение типа T2 можно присвоить переменной типа T1 или тип T2 совместим по присваиванию с типом T1, если выполняется одно из следующих условий:
* T1 и T2 совместимы
* T1 - вещественного типа, T2 - целого
* T1 - строкового типа, T2 - символьного
* T1 - pointer, T2 - типизированный указатель
* T1 - указатель или процедурная переменная, T2=nil
* T1 - процедурная переменная, T2 - имя процедуры или функции с соответствующим списком параметров
* T1, T2 - классовые типы, один из них - наследник другого. Поскольку в PascalABC.NET все типы кроме указателей являются потомками типа Object, то значение любого типа (кроме указателей) можно присвоить переменной типа Object
* T1 - тип интерфейса, T2 - тип класса, реализующего этот интерфейс
Если тип T2 совместим по присваиванию с типом T1, то говорят также, что тип T2 неявно приводится к типу T1.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
6.3. Совместимость
6.3. Совместимость Приложения, которые скомпилированы с заголовочными файлами из библиотеки glibc и привязанные к одной из ее версий, будут работать и с более поздними версиями библиотеки. Эта обратная совместимость обычно означает, что программисту не придется
Совместимость и преобразование типов данных
Совместимость и преобразование типов данных Настала пора рассмотреть еще два важных вопроса: совместимость типов данных и преобразование одного типа к другому.Что получится, если сложить два числовых значения? Правильно — еще одно числовое значение. А если сложить
Совместимость и преобразование типов данных
Совместимость и преобразование типов данных Настала пора рассмотреть еще два важных вопроса: совместимость типов данных и преобразование одного типа к другому.Что получится, если сложить два числовых значения? Правильно — еще одно числовое значение. А если сложить
Совместимость
Совместимость Каждое появление новой операционной системы затрагивает больной вопрос – совместимость с программным обеспечением и оборудованием. Система Windows 7 в этом смысле не исключение: разработчики приложили максимум усилий в этом плане. Конечно, нашлось множество
1.5. Проверка на совместимость
1.5. Проверка на совместимость Перед установкой Windows 7 очень полезно сделать предварительную оценку того, справится ли компьютер с новой системой или нет. Кроме того, не забывайте, что подключенные и отлично работающие в данный момент внешние устройства совсем не
Совместимость
Совместимость 1. Какие операционные системы Delphi поддерживает? Версия Delphi 1.0 предназначается для Windows 3.1x. Hет причин, по которым Delphi 1.0 не работал бы в системах, которые обеспечивают эмуляцию Windows 3.1, подобно OS/2 Warp, Windows NT, UnixWare 2.0 и т.д. Delphi 2.0 предназначена для работы под Win32/Intel
3. Совместимость типов объектов
3. Совместимость типов объектов Наследование до некоторой степени изменяет правила совместимости типов в Borland Pascal. Помимо всего прочего, порожденный тип наследует совместимость типов всех своих порождающих типов.Эта расширенная совместимость типов принимает три
R.14.3 Эквивалентность типов
R.14.3 Эквивалентность типов Две конструкции шаблонное-имя-класса обозначают один и тот же класс, если в них совпадают имена шаблонов типа и значения указанных параметров. Например, в следующих описаниях x и y одного типа, который отличен от типа z:template‹class E, int size› class
2.3.9 Эквивалентность типов
2.3.9 Эквивалентность типов Два структурных типа являются различными даже когда они имеют одни и те же члены. Например:struct s1 (* int a; *); struct s2 (* int a; *);есть два разных типа, поэтомуs1 x; s2 y = x; // ошибка: несоответствие типовСтруктурные типы отличны также от основных типов, поэтомуs1 x;
Совместимость
Совместимость Другой показатель качества ПО, совместимость, был определен как легкость, с которой программные продукты (в данном обсуждении - модули) можно комбинировать между собой. Если структуры данных не проектировались с этой целью, то имеющие к ним доступ действия
Стандарты и совместимость
Стандарты и совместимость Лазерные носители информации, работающие с ними приводы описаны множеством стандартов и спецификаций, а также их модификаций, расширений и дополнений. Пока пользователь записывает и читает диски на конкретном приводе отдельно взятого
Совместимость партнеров
Совместимость партнеров Вообще говоря, астролог, рассчитывающий и интерпретирующий карту совместимости не для себя, а для клиента, зачастую оказывается в достаточно сложном этическом положении. Как повлияет сказанное им на дальнейшие отношения, что именно стоит
36. Совместимость типов объектов
36. Совместимость типов объектов Наследование до некоторой степени изменяет правила совместимости типов в Borland Pascal. Потомок наследует совместимость типов всех своих предков.Эта расширенная совместимость типов принимает три формы:1) между реализациями объектов;2) между