Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.02.25;
Скачать: CL | DM;

Вниз

Обращение к свойству класса после вызова Destroy.   Найти похожие ветки 

 
Riply ©   (2007-02-04 05:40) [0]

Здравствуйте !
Тут на форуме (не помню в какой ветке) высмеяли человека
за использование, примерно, такой конструкции:
destructor MyClass.Destroy;
begin
 inherited Destroy;
 здесь обращение к FMyPivateVar;
end;
А в SysUtils я натолкнулась на такую реализацию :
TSimpleRWSync = class(TInterfacedObject, IReadWriteSync)
 private
   FLock: TRTLCriticalSection;
 public
   constructor Create;
   destructor Destroy; override;
....................
destructor TSimpleRWSync.Destroy;
begin
 inherited Destroy;
 DeleteCriticalSection(FLock);
end;
Обясните мне, пожалуйста, почему во втором случае это допустимо ?


 
Loginov Dmitry ©   (2007-02-04 10:22) [1]

Это допустимо в любом случае. Все зависит только от логики работы разрабатываемого класса.


 
Riply ©   (2007-02-05 07:15) [2]

> [1] Loginov Dmitry ©   (04.02.07 10:22)
Спасибо. А то в "той ветке" так безапелиционно заявили, что это бред,
что и я решила - наверное бред :)


 
Leonid Troyanovsky ©   (2007-02-05 21:46) [3]


> Riply ©   (05.02.07 07:15) [2]

> что и я решила - наверное бред :)


Вызов inherited Destroy не обязан быть последним в деструкторе,
а бывает таким лишь typically.
Т.е., деструктор с inherited вызывается как обычный метод,
не вызывая последующего (по выходу из деструктора) разрушения
объекта, см. также тему Constructors and destructors).
Поэтому, если мы обращаемся в деструкторе после вызова
inherited destroy к приватным полям, которых не было у предка,
мы ничем не рискуем. Хотя, выглядит это не очень эстетично.

--
Regards, LVT.


 
Leonid Troyanovsky ©   (2007-02-05 21:50) [4]


> Leonid Troyanovsky ©   (05.02.07 21:46) [3]

> (по выходу из деструктора)


Читать: при выходе из деструктора.

--
Regards, LVT.


 
oxffff ©   (2007-02-05 23:18) [5]

Главное, чтобы не добраться до _ClassDestroy


 
oxffff ©   (2007-02-05 23:22) [6]

_ClassDestroy -вызывается во внешнем(первом вызванном) декструкторе, согласно регистра dl.



Страницы: 1 вся ветка

Текущий архив: 2007.02.25;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.037 c
15-1170648194
Slider007
2007-02-05 07:03
2007.02.25
С днем рождения ! 4 февраля


2-1170943484
Volfram
2007-02-08 17:04
2007.02.25
DelphiX, TDXimageList RunTime Creation


15-1168949697
Vlad Oshin
2007-01-16 15:14
2007.02.25
Рационализаторская идея про стир.машины


15-1170176379
Chort
2007-01-30 19:59
2007.02.25
Распределить текст по разным столбцам


2-1170671273
kail
2007-02-05 13:27
2007.02.25
запуск программы один раз