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

Вниз

Почему не вызывается destructor?   Найти похожие ветки 

 
newbie2   (2006-06-01 16:36) [0]

поясните почему
TmyColl = class(TCollection)
public
property Items[Index: Integer]: TmyItem read GetItem; default;
...

если вызвать так:
myObj.myColl[i].myItem.Free;
TmyItem.Destroy - вызывается, а если так то нет:
myObj.myColl[i].Free;


 
Amoeba ©   (2006-06-01 16:49) [1]

Деструкторы всегда должны быть виртуальными. Просто добавь в объявление деструктора волшебное словечко override и все заработает как надо.


 
De   (2006-06-01 16:52) [2]

да он и так override


 
Amoeba ©   (2006-06-01 16:54) [3]


> De   (01.06.06 16:52) [2]
> да он и так override

Ты что, имел счасть видеть код автора вопроса, или есть он сам, что делаешь такое безаппеляционное завление?


 
Loginov Dmitry ©   (2006-06-01 18:26) [4]

Сомневаюсь, что при таком коде

myObj.myColl[i].myItem.Free;

вызывается TmyItem.Destroy


 
Amoeba ©   (2006-06-02 12:23) [5]


> Loginov Dmitry ©   (01.06.06 18:26) [4]
> Сомневаюсь, что при таком коде
>
> myObj.myColl[i].myItem.Free;
>
> вызывается TmyItem.Destroy

Free вызовет Destroy если последний, как это полагается, виртуальный. Если же программист по невнимательности или незнанию сделал деструктор статическим, то он, естественно, вызываться из Free не будет.



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

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

Наверх




Память: 0.47 MB
Время: 0.061 c
2-1148971821
JustNick
2006-05-30 10:50
2006.06.18
Новый Button в TToolBar


15-1148282004
balepa
2006-05-22 11:13
2006.06.18
Начинающим нефурыкает ? или тока у меня


2-1149245176
DelphiLexx
2006-06-02 14:46
2006.06.18
ComboBox отловить нажатие на стрелочку


2-1149058692
Zhekson
2006-05-31 10:58
2006.06.18
почему ValInt := StrToInt( 1 ); выдаёт EConvertError


2-1149175089
dimak-2k
2006-06-01 19:18
2006.06.18
Проверка о существовании файла и кое-что о RadioGroup