Einzelnen Beitrag anzeigen

bcvs

Registriert seit: 16. Jun 2011
703 Beiträge
 
Delphi 12 Athens
 
#8

AW: TObjectList<TMyClass> create und inherited

  Alt 6. Feb 2019, 08:31
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.
  Mit Zitat antworten Zitat