在构造函数的第一行是否必须具有Inherited?
我可以在“继承”之前使用其他代码吗?
示例:
constructor TMyIniFile.Create(SectionName: string);
VAR Path: string;
begin
Path:= UserProfileFolder; //initialize path here
inherited Create(Path);
//more code ..
end;
答案 0 :(得分:5)
Delphi的对象模型(与C ++对象模型相比)的一个优点是,作为程序员,您可以决定何时调用继承的构造函数。您在问题中显示的代码非常安全。
此外 - 您可以毫无问题地使用实例字段,即
CONSTRUCTOR TSomeClass.Create;
BEGIN
FSomeInstanceField:=123;
INHERITED Create;
END;
这将调用继承的构造函数,该构造函数可以访问FSomeInstanceField变量的修改值。