Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Удобно иметь общий сложный метод, а различия вынести в сменные подчиненные методы. Эту идею называют конструктивным полиморфизмом. Она осуществляется с помощью виртуальных подчиненных методов.
При определении методов виртуальными связь между этими методами и вызывающими их процедурами будет устанавливаться не во время трансляции, а во время выполнения программы (позднее связывание). Для виртуальных методов каждого типа транслятор создает таблицу с их адресами, которая используется при выполнении (а не при компиляции).
Чтобы воспользоваться виртуальными методами, необходимо выполнить следующие действия:
1. В описании объекта после заголовка виртуального метода добавить слово virtual.
2. Заголовки виртуальных методов предка и потомка должны в точности совпадать, причем оба метода должны быть виртуальными.
3. Инициализация экземпляра объекта должна выполняться методом особого вида, который называется конструктором:
Constructor <имя блока> [(<перечень формальных параметров>)];
Это разновидность процедуры. Явно записанных действий в нем может и не быть, как и формальных параметров.
Под инициализацией экземпляра объекта понимается присвоение полям исходных значений, открытие файлов, первоначальный вывод на экран и т. п. Именно такие действия и возлагаются на конструктор.
Помимо действий, заложенных в него программистом, конструктор выполняет подготовку механизма позднего связывания виртуальных методов, следовательно, до вызова любого виртуального метода должен быть выполнен конструктор.
Роль деструктора противоположна роли конструктора. Он выполняет действия, завершающие работу с объектами: закрывает файлы, очищает динамическую память, восстанавливает экран и т. п. Заголовок метода деструктора выглядит следующим образом:
Destructor <имя блока> [(<список формальных параметров>);
Дата публикования: 2014-10-25; Прочитано: 309 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!