Forum: Object-Pascal / Delphi-Language
Delphi
by jfheins,
27. Sep 2020
Ja, genau. Das passiert bei allen Methoden, die nur verdeckt werden. (Verdecken = Neue Definition aber ohne override)
=> Verdecken sollte vermieden werden.
Weil .Destroy ja schon virtuell ist damit genau eine einzige Stelle existiert, wo man Freigabecode unterbringen sollte.
Free hingegen macht ja nur den nil check mehr, und damit war die Methode aus Sicht der Entwickler einfach fertig.
Forum: Object-Pascal / Delphi-Language
Delphi
by jfheins,
27. Sep 2020
Du hast ja Free nicht überschrieben (weil unmöglich - überschreiben geht ja nur bei virtuellen Methoden)
Wenn du dir FreeAndNil anguckst, steht da:
procedure FreeAndNil(var Obj);
var
Temp: TObject;
begin
Temp := TObject(Obj);
Pointer(Obj) := nil;
Temp.Free;