Boriss » 02.09.2005 14:31:49
Дело в том, что срабатывает объявление constructor - это особая "процедура", которая строит для объектов особые таблицы VMT (Virtuel Method Table), таблицу динамических методов (процедур и функций объекта). Отсюда и название "построитель"
Виртуальные методы вызываются в выполняемом файле (не в исходном тексте программы!) по адресу, который хранится в такой таблице. Если ее нет, то при вызове виртуального метода (без предшествующего вызова констрактора) идет обращениу к той области памяти, где она должна быть и где должен быть адрес процедуры, а там ... - в лучшем случае получите "Программа выполнила недопустимую операцию...". Хуже, если начнет что-то делать! Но что?
Аналогично, закончив работу класса (объекта) нужно оную таблицу удалить. Делает это "особая" поцедура destructor.
ОБЕ МОГУТ НИЧЕГО БОЛЬШЕ НЕ ДЕЛАТЬ! Срабатывает объявление constructor, destructor! Дополнительный код для обеспечения такой работы писать самому не надо. Функциональнось добавляем им для экономии, чтобы не писать других методов