Обязательно ли иметь 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.

Другие вопросы по тегам