Um die Verwirrung komplett zu machen, habe ich das Ganze mal mit der nicht-generischen TObjectList getestet:
Delphi-Quellcode:
TMyObjectList = class(TObjectList)
private
...
public
constructor Create;
destructor Destroy; override;
end;
constructor TMyObjectList.Create;
begin
inherited; // <- ohne Create
// Weiteres Zeugs
end;
Ergebnis: Das inherited; (ohne Create, ohne Parameter) ruft hier den richtigen Constructor auf und OwnsObjects ist true;
Wenn man in die Doku schaut, wird die Sache aber auch wieder etwas klarer:
Die nicht-generische TObjectList hat ein Create ohne Parameter:
Delphi-Quellcode:
constructor Create; overload;
constructor Create(AOwnsObjects: Boolean); overload;
Die generische TObjectList hat das nicht:
Delphi-Quellcode:
constructor Create(AOwnsObjects: Boolean = True); overload;
constructor Create(const AComparer: IComparer<T>; AOwnsObjects: Boolean = True); overload;
constructor Create(const Collection: TEnumerable<T>; AOwnsObjects: Boolean = True); overload;
Es ist also offensichtlich ein Unterschied, ob es ein Create ohne Parameter gibt oder ob man bei einem Create(AOwnsObjects: Boolean = True) den Parameter weglässt.