Проверка диапазонов при вызове виртуальных методов
В процессе разработки программы вам, возможно, захочется по-
высить меры безопасности, которая снижается из-за вызовов вирту-
альных методов Borland Pascal. Если директива $R находится во
включенном состоянии, {$R+}, то все вызовы виртуальных методов
будут проверяться на состояние инициализации для выполняющих вы-
зовы реализаций. Если выполняющая вызов реализация еще не была
инициализирована конструктором, то произойдет ошибка проверки ди-
апазона исполняющей системы.
Примечание: Состоянием по умолчанию является {$R-}.
После того, как вы хорошенько перетрясли программу и удосто-
верились, что отсутствуют вызовы методов из неинициализированных
реализаций, вы можете до некоторой степени ускорить выполнение
программы путем переключения директивы $R в пассивное состояние.
После этого проверка вызовов методов из неинициализированных реа-
лизаций осуществляться не будет, что оставляет вероятность блоки-
ровки системы, если будет выявлена такая ошибка.
Виртуальный однажды - виртуальный всегда
Вы уже вероятно обратили внимание, что как TWinged, так и
TBee содержат методы, называемые Show и Hide. Все заголовки мето-
дов для Show и Hide объявлены виртуальными и снабжены зарезерви-
рованным словом virtual. Как только родительский тип объекта объ-
являет метод виртуальным, все его потомки также должны объявить
этот метод виртуальным. Другими словами, статический метод никог-
да не сможет переопределить виртуальный метод. Если вы попытае-
тесь сделать это, то компилятор выдаст сообщение об ошибке.
Также следует помнить, что после того, как метод стал вирту-
альным, его заголовок не может изменяться в объектах более низко-
го уровня иерархии. Вы можете представлять себе каждое определе-
ние виртуального метода как ворота для всех их. Исходя из этих
соображений, заголовки всех реализаций одного и того же виртуаль-
ного метода должны быть идентичными, включая число параметров и
их типы. Это не относится к статическим методам: статический ме-
тод, переопределяющий другой, может иметь отличное число парамет-
ров и типы этих параметров, в зависимости от необходимости.
Это целый новый мир.