Приведение типов в языках программирования позволяет представить какую-либо переменную или объект в виде другого типа. Существует достаточно большое количество способов, при помощи которых можно приводить объекты и переменные от одного типа к другому, но мы рассмотрим наиболее востребованные. Явное приведение
Мы уже не раз сталкивались с ситуациями, когда необходимо, например, получить строковое представление числа, или число из его строкового представления. Далеко за примерами таких ситуаций идти не придется, т.к. нам потребуется реализовать соответствующие преобразования даже при попытке отобразить число на экране, например в виде сообщения. Кроме того, ранее мы уже упоминали о существовании таких полезных функций, как StrToInt, IntToStr и т.п. Еще раз вспомним, как они работают:
Также существуют функции FloatToStr, StrToFloat, которые выполняют аналогичные действия, но только между строковыми и вещественными типами данных.
В таком случае произойдет преобразование числа в символ по таблице ASCII. Тоже самое можно проделать и наоборот:
Неявное приведение
Неявными считаются те преобразования типов переменных, которые происходят без нашего непосредственного контроля. Обычно они происходят посредством операций присвоения или сравнения. Например:
Но важно учитывать те случаи, когда присваиваемое значение может принципиально не соответствовать переменной, в которую происходит присвоение. Примером таких случаев является попытка присвоить целочисленной переменной вещественное значение (или математическое выражение, которое сводится к вещественному значению), или попытка выйти за границы допустимых значений у какого-либо типа. Последняя ошибка в некоторых случаях может отлавливаться компилятором еще до компиляции («Constant expression violates subrange bounds»), но чаще всего такую ошибку допускают именно в run-time, т.е. во время работы программы, поэтому стоит с осторожностью применять неявные приведения. Приведения объектов
Рассмотрим два класса, один из которых будет являться родительским для другого:
В случае с экземплярами классов, возможны привидения объекта дочернего класса к родительскому и наоборот. Рассмотрим эти приведения подробнее: Восходящие приведения
Такие приведения позволяют представить объект дочернего класса в виде родительского. На самом деле никакого преобразования в данном случае производить не требуется, т.к. возможность обращаться к экземпляру дочернего класса, как к экземпляру родительского класса, уже автоматически предусмотрена в Delphi. Не нужно ничего делать — мы всегда можем обратиться к методам, полям (и т.п.) родительского класса.
| |||||||||||||
|
| |||||||||||||
| Просмотров: 958 | | |||||||||||||
| Всего комментариев: 0 | |