Лекция: Виртуальные методы. Конструкторы и деструкторы

 

Удобно иметь общий сложный метод, а различия вынести в сменные подчиненные методы. Эту идею называют конструктивным полиморфизмом. Она осуществляется с помощью виртуальных подчиненных методов.

При определении методов виртуальными связь между этими методами и вызывающими их процедурами будет устанавливаться не во время трансляции, а во время выполнения программы (позднее связывание). Для виртуальных методов каждого типа транслятор создает таблицу с их адресами, которая используется при выполнении (а не при компиляции).

Чтобы воспользоваться виртуальными методами, необходимо выполнить следующие действия:

1. В описании объекта после заголовка виртуального метода добавить слово virtual.

2. Заголовки виртуальных методов предка и потомка должны в точности совпадать, причем оба метода должны быть виртуальными.

3. Инициализация экземпляра объекта должна выполняться методом особого вида, который называется конструктором:

Constructor <имя блока> [(<перечень формальных параметров>)];

Это разновидность процедуры. Явно записанных действий в нем может и не быть, как и формальных параметров.

Под инициализациейэкземпляра объекта понимается присвоение полям исходных значений, открытие файлов, первоначальный вывод на экран и т. п. Именно такие действия и возлагаются на конструктор.

Помимо действий, заложенных в него программистом, конструктор выполняет подготовку механизма позднего связывания виртуальных методов, следовательно, до вызова любого виртуального метода должен быть выполнен конструктор.

Рольдеструктора противоположна роли конструктора. Он выполняет действия, завершающие работу с объектами: закрывает файлы, очищает динамическую память, восстанавливает экран и т. п. Заголовок метода деструктора выглядит следующим образом:

Destructor <имя блока> [(<список формальных параметров>);

еще рефераты
Еще работы по информатике