Форум: "Потрепаться";
Текущий архив: 2004.07.25;
Скачать: [xml.tar.bz2];
ВнизОсобенности вызовов конструкторов Найти похожие ветки
← →
jack128 © (2004-07-06 18:53) [17]
> Исключение в цепочке унаследованных конструкторов тоже должно
> уничтожать свежесозданный объект.
да не должно. вызов унаследованного конструктора - это вызов унаследованного конструктора и нечего более. Вызова _ClassCreate не происходит и соответственно объект не уничтожается.
сравните
constructor TTest.Create();
begin
raise Exception.Create();
end;
constructor TChildTest.Create()
begin
try
inherited Create; // исключение в унаследованном конструкторе, но объект жив
except
end;
end;
try
TTest.Create() // исключение в конструкторе и объект помер
except
end;
> синтаксически и такое вот разрешено:
>
> procedure TForm1.Btn1Click(Sender : TObject);
> var mycomp : tcomponent;
> begin
> caption := mycomp.name;
> end
конечно - это же логическая ошибка, а не синтаксическая. Использовать битый указатель безнаказанно нигде нельзя.
но тут то другой случай. Я вообще не говорил про ошибку, мне интересно почему сделано именно так, а не иначе. Почему вдруг объект должен уничтоваться во случае 2) ?
> Думаю, это недоработка Борланда.
А я так верил в его святость :-))
> А все остальные участники ветки похоже не поняли, о чем
> речь вообще идет
еще не вечер ;-)
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2004.07.25;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.037 c