Форум: "Начинающим";
Текущий архив: 2006.06.18;
Скачать: [xml.tar.bz2];
ВнизПочему не вызывается 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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.012 c