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