Главная страница
    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.45 MB
Время: 0.041 c
15-1170251680
Ученик чародея
2007-01-31 16:54
2007.02.25
PHP vs Delphi.


15-1170654986
leonidus
2007-02-05 08:56
2007.02.25
Подскажите аглоритм проверики строки на примерную схожесть


1-1168005013
Igor_Z
2007-01-05 16:50
2007.02.25
Вкладки в свойстве файла


15-1170388196
Slider007
2007-02-02 06:49
2007.02.25
С днем рождения ! 2 февраля


2-1170663952
Fs
2007-02-05 11:25
2007.02.25
Связка таблиц?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский