
сать Virtual. Заголовки виртуальных методов предка и потомка 
должны в точности совпадать, причем оба метода должны быть 
виртуальными. Отсюда следует, что при проектировании методов 
следует учесть, что некоторые из них потребуют дальнейшего раз-
вития, и объявить их виртуальными. 
И наконец, инициализация экземпляра объекта должна вы-
полняться методом особого вида, который называется
 конструк-
тор.
 Обычно на конструктор возлагается присвоение полям ис-
ходных значений, открытие файлов, первоначальный вывод на 
экран и т.д. Помимо действий, заложенных в него программис-
том, конструктор выполняет подготовку так называемого меха-
низма позднего связывания виртуальных методов. Отсюда следу-
ет, что до вызова любого виртуального метода должен быть вы-
полнен какой-либо конструктор. Структура конструктора такая же, 
как и
 у
 любой процедуры, только вместо слова Procedure в заго-
ловке метода пишется слово Constructor. 
В паре с конструктором всегда существует и
 деструктор,
 роль 
которого противоположна роли конструктора, — он выполняет 
действия, завершающие работу
 с
 объектом: закрывает файлы, очи-
щает динамическую память, осуществляет восстановление неко-
торых состояний, предшествующих работе с объектом и т.д. Вооб-
ще деструктор может не выполнять никаких действий, но обяза-
тельно должен присутствовать
 в
 списке методов объекта. Заголовок 
метода-деструктора начинается со слова Destructor, в осталь-
ном же его структура такая же, как и у любого другого метода. 
Скажем теперь несколько слов о механизме раннего и позднего 
связывания. Раннее связывание предполагает, что связь между ме-
тодами устанавливается во время трансляции программы,
 в
 то вре-
мя как позднее связывание предусматривает динамическую связь, 
т.е.
 реализуемую по мере необходимости в процессе выполнения 
программы. За счет такого механизма и удается правильно устано-
вить все нужные связи для виртуальных
 методов.
 Результат поздне-
го связывания в этом случае зависит от типа того объекта, чей 
метод обратился к виртуальному методу. Конструктор для подго-
товки позднего связывания устанавливает связь между экземпля-
ром объекта и таблицей виртуальных методов (VMT) объекта. Для 
каждого виртуального метода VMT содержит его адрес. Вызов вир-
туального метода делается не прямо, а через
 VMT:
 сначала по име-
ни метода определяется его адрес, а затем по этому адресу переда-
ется управление. Именно по этим причинам использованию вирту-
альных методов должен предшествовать вызов конструктора. 
Чтобы разместить объект в динамической памяти, надо опи-
сать
 указатель на
 него.
 Выделение памяти
 для
 динамического объек-
та выполняется процедурой
 NEW.
 Поскольку сразу после этого про-
изводится инициализация объекта,
 то для
 объектов процедура
 NEW 
выглядит так: 
162