Обязательно ли иметь Inherited в первой строке в конструкторе?
Обязательно ли иметь Inherited в первой строке в конструкторе?
Могу ли я иметь другой код до "Унаследованного"?
Пример:
constructor TMyIniFile.Create(SectionName: string);
VAR Path: string;
begin
Path:= UserProfileFolder; //initialize path here
inherited Create(Path);
//more code ..
end;
1 ответ
Решение
Одним из преимуществ объектной модели Delphi (по сравнению с объектной моделью C++) является тот факт, что вы - как программист - можете решить, КОГДА вы вызываете унаследованный конструктор. Код, отображаемый в вашем вопросе, совершенно безопасен для запуска.
Также - вы можете использовать поля экземпляра без проблем, т.е.
CONSTRUCTOR TSomeClass.Create;
BEGIN
FSomeInstanceField:=123;
INHERITED Create;
END;
Это вызовет унаследованный конструктор, который будет иметь доступ к измененному значению переменной FSomeInstanceField.