Re: Smart pointers(деструкторы) в у Delphi
От: Аноним  
Дата: 24.02.04 07:40
Оценка:
Здравствуйте, Курилка, Вы писали:

К>Просвятите чайника — никак не могу найти толкового описания времени жизни объектов в Delphi, есть такое ощущение, что для всех объектов нужно обязательно вызывать Free насильственно, что не очень-то помогает программисту на мой взгляд (для чего в C++ к примеру есть std:auto_ptr<>, но там для объекта в хипе деструктор вызывается автоматически). Допустим при возникновении исключений довольно криво будет всем объектам Free вызывать в случае чего...

К>Может есть всё-таки выход из ситуации?
К>(буду рад любым линкам по теме, сам что-то ничего пока не нашёл )

в C++ все классы — суть object в Delphi, плюс автоматические деструкторы(с конструкторами хуже — в Delphi их можно заменить простые Init процедуры, "конструктор по умолчанию" обнуляет все поля). Так что class в Delphi совсем не то, что в C++. И принципы работы другие — выделяется только в куче, позволяет быть представителем интерфейса, COM-объектом напрямую, а не через страшные шаблоны как в C++ и пр. и пр. А вообще стоит посмотреть в исхдники VCL — там все такие кинструкции заключениы в try..finally..end, это такое правило . Хотя я для свох нужд сделал обвязку типа smart pointer для Delphi на интерфейсе — все стало проще правда для использования smart pointer существует жуткое количество ограничений, например нельзя использовать const& для содержимого но только это проблемы самой идеи, а не реализации.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.