Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.02.25;
Скачать: [xml.tar.bz2];

Вниз

Обращение к свойству класса после вызова 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.043 c
15-1170225138
vitv
2007-01-31 09:32
2007.02.25
В чём преимущества MSSQL2000 над IB6X(FB1.5.X)?


6-1158428475
kernel
2006-09-16 21:41
2007.02.25
Console&Socket


2-1170524663
gosha73
2007-02-03 20:44
2007.02.25
Ошибочны ли мои опасения?


2-1170943151
Vremenniy
2007-02-08 16:59
2007.02.25
Проблемы со стеком


2-1170405465
wrtyu
2007-02-02 11:37
2007.02.25
Как выполнить http-скрипт?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский