Статический тип, динамический тип
Статический тип, динамический тип
Название последнего свойства предполагает различение "статического типа" и "динамического типа". Тип, который используется при объявлении некоторого элемента, является статическим типом соответствующей ссылки. Если во время выполнения эта ссылка присоединяется к объекту некоторого типа, то этот тип становится динамическим типом этой ссылки.
Таким образом, при объявлении p: POLYGON статический тип ссылки, обозначенной p, есть POLYGON, после выполнения create p динамическим типом этой ссылки также является POLYGON, а после присваивания p := r, где r имеет тип RECTANGLE и не пусто, динамическим типом становится RECTANGLE.
Правило согласования типов утверждает, что динамический тип всегда должен соответствовать статическому типу.
Чтобы избежать путаницы напомним, что мы имеем дело с тремя уровнями: сущность - это некоторый идентификатор в тексте класса, во время выполнения ее значение является ссылкой (за исключением развернутого случая), ссылка может быть присоединена к объекту.
У объекта имеется только динамический тип, который он получил в момент создания. Этот тип во время жизни объекта не изменяется.
В каждый момент во время выполнения у ссылки имеется динамический тип, тип того объекта, к которому она сейчас присоединена (или специальный тип NONE, если эта ссылка пуста). Динамический тип может изменяться в результате операций переприсоединения.
Только у сущности имеются и статический, и динамический типы. Ее статический тип - это тип, с которым она была объявлена: если объявление имеет вид x: T, то этим типом будет T. Ее динамический тип в каждый момент выполнения - это тип значения этой ссылки, т.е. того объекта, к которому она присоединена.
В развернутом случае нет ссылки, значением x является объект типа T, и T является и статическим типом и единственно возможным динамическим типом для x.Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Динамический пул потоков
Динамический пул потоков Динамический пул потоков не является каким-то специфическим механизмом, продиктованным именно микроядерной архитектурой QNX. Это удачная искусственная конструкция, все определения которой размещены в файле <sys/dispatch.h>. Удивительно не то, что в
Статический вес
Статический вес Определение страниц, получающих недостаточный статический вес. Часть важных страниц может недополучать статический вес. Вместо этого наибольший вес может переходить к непродвигаемым и техническим страницам. Чтобы решить эту проблему, необходимо:?
Объекты имеют статический тип
Объекты имеют статический тип Один из выводов, который можно сделать из трех требований QueryInterfасе , состоит в том, что множество интерфейсов, поддерживаемых объектом, не может изменяться во времени. Спецификация СОМ четко требует, чтобы этот вывод был верен для всех
10.1. PSPICE как статический логический анализатор
10.1. PSPICE как статический логический анализатор Шаг 1 Начертите в редакторе SCHEMATICS схему, изображенную на рис. 10.1. Необходимые компоненты вы найдете в библиотеке EVAL.slb. Редактор для установления метки (out) можно открыть, дважды щелкнув мышью по соответствующему участку
Динамический блок
Динамический блок Для обеспечения регулировки состояния блока по месту его расположения создаются динамические блоки. Они определяются путем указания настраиваемых свойств. Динамический блок должен содержать хотя бы один параметр и одну связанную с ним операцию.
64. Разумно сочетайте статический и динамический полиморфизм
64. Разумно сочетайте статический и динамический полиморфизм РезюмеСтатический и динамический полиморфизм дополняют друг друга. Следует ясно представлять себе их преимущества и недостатки, чтобы использовать каждый из них там, где он дает наилучшие результаты, и
Динамический блок
Динамический блок Для обеспечения регулировки состояния блока по месту его расположения создаются динамические блоки. Они определяются путем указания настраиваемых свойств. Динамический блок должен содержать хотя бы один параметр и одну связанную с ним операцию.
17.5.3. Статический вызов виртуальной функции
17.5.3. Статический вызов виртуальной функции Вызывая виртуальную функцию с помощью оператора разрешения области видимости класса, мы отменяем механизм виртуализации и разрешаем вызов статически, на этапе компиляции. Предположим, что мы определили виртуальную функцию isA()
Динамический ввод координат
Динамический ввод координат С помощью функции динамического ввода значения координат можно вводить не в командной строке, а в поле всплывающей подсказки, которая отображается рядом с курсором и динамически обновляется по мере перемещения курсора. Функция
Динамический блок
Динамический блок Для обеспечения регулировки состояния блока по месту его расположения создаются динамические блоки. Они определяются путем указания настраиваемых свойств. Динамический блок должен содержать хотя бы один параметр и одну связанную с ним операцию.
Динамический ввод данных
Динамический ввод данных В более ранних версиях программы (до AutoCAD 2006) все запросы и приглашения для ввода данных можно было увидеть только в командной строке. По этой причине при работе с программой приходилось постоянно переводить взгляд с графической области на
Динамический диапазон матрицы
Динамический диапазон матрицы Динамический диапазон светочувствительной матрицы – это ее способность воспринимать градации каждого из цветов. Говоря проще, динамический диапазон определяет, сколько ступеней разности контраста может увидеть и зафиксировать матрица.
Статический механизм
Статический механизм Устранить последнее неясности в понимании закрепленного объявления поможет следующее замечание: это чисто статический механизм, не предполагающий никаких изменений объектов в период выполнения. Все ограничения могут быть проверены в период