Текущий архив: 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.45 MB
Время: 0.045 c