是否必须在构造函数的第一行上具有Inherited?

WeG*_*ars 2 delphi delphi-xe7

是否必须在构造函数的第一行上具有Inherited?
我可以在"继承"之前使用其他代码吗?

例:

constructor TMyIniFile.Create(SectionName: string);                                          
VAR Path: string;
begin
 Path:= UserProfileFolder;  //initialize path here

 inherited Create(Path);

 //more code ..
end;
Run Code Online (Sandbox Code Playgroud)

Hea*_*are 5

Delphi的对象模型(与C++对象模型相比)的一个优点是,作为程序员,您可以决定何时调用继承的构造函数.您在问题中显示的代码非常安全.

此外 - 您可以毫无问题地使用实例字段,即.

CONSTRUCTOR TSomeClass.Create;
  BEGIN
    FSomeInstanceField:=123;
    INHERITED Create;
  END;
Run Code Online (Sandbox Code Playgroud)

这将调用继承的构造函数,该构造函数将有权访问FSomeInstanceField变量的修改值.

  • 通常这是一个标志,如果设计师在你这样做时有缺陷. (3认同)