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

时间:2018-03-21 13:37:30

标签: delphi delphi-xe7

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

示例:

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

 inherited Create(Path);

 //more code ..
end;

1 个答案:

答案 0 :(得分:5)

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

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

CONSTRUCTOR TSomeClass.Create;
  BEGIN
    FSomeInstanceField:=123;
    INHERITED Create;
  END;

这将调用继承的构造函数,该构造函数可以访问FSomeInstanceField变量的修改值。