Borland Pascal. Руководство пользователя



         

Деструкторы


Borland Pascal предоставляет специальный тип метода, называ- емый "сборщиком мусора" или деструктором, для очистки и удаления динамически размещенного объекта. Деструктор объединяет шаг уда- ления объекта с какими-либо другими действиями или задачами, не- обходимыми для данного типа объекта. Для единственного типа объ- екта можно определить несколько деструкторов.

Деструктор определяется совместно со всеми другими методами объекта в определении типа объекта:

tyрe TEmployee = object Name: string[25]; Title: string[25]; Rate: Real; constructor Init(AName, ATitle: String; ARate: Real); destructor Done; virtual; function GetName: String; function GetTitle: String; function GetRate: Rate; virtual; function GetPayAmount: Real; virtual; end;

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

Запомните, что зарезервированное слово destructor не требу- ется указывать для каждого метода очистки, даже если определение типа объекта содержит виртуальные методы. Деструкторы в действи- тельности работают только с динамически размещенными объектами. При очистке динамически размещенного объекта, деструктор осущест- вляет специальные функции: он гарантирует, что в динамически распределяемой области памяти всегда будет освобождаться правиль- ное число байтов. Не может быть никаких опасений по поводу ис- пользования деструктора применительно к статически размещенным объектам; фактически, не передавая типа объекта деструктору, вы лишаете объект данного типа полных преимуществ управления динами- ческой памятью в Borland Pascal.

Деструкторы в действительности становятся самими собою тог- да, когда должны очищаться полиморфические объекты и когда должна освобождаться занимаемая ими память. Полиморфические объекты - это те объекты, которые были присвоены родительскому типу благо- даря правилам совместимости расширенных типов Borland Pascal. Эк- земпляр объекта типа THourly, присвоенный переменной типа TEmployee, является примером полиморфического объекта. Эти прави- ла также могут быть применены к объектам; указатель на THourly может свободно быть присвоен указателю на TEmployee, а указуемый этим указателем объект опять же будет полиморфическим объектом.




Содержание  Назад  Вперед