Und dieser neue Destructor wird ausschlichlich nur dann aufgerufen, wenn die Variable diesen Klassentyp hat, bzw. gecastet wird.
Free und Destroy über Variable/Cast eines Vorfahren ignoriert dieses Destroy dann, was ja eigentlich fast nie gewollt sein dürfte.
Wenn doch, dann benennt diesen neuen Destructor doch bitte anders.
PS: Post #11, da fehlt der Vorfahre beim NullObject.
Ableitung mit böser Prüfung im Vorfahren.
Delphi-Quellcode:
type
TMethode = class
...
function IsNullObject: Boolean; {virtual;}
end;
TMethodeNullObject = class(TMethodeNullObject);
function TMethode.IsNullObject: Boolean;
begin
Result := Self is TMethodeNullObject;
end;
oder ohne Ableitung
Delphi-Quellcode:
type
TMethode = class
...
function IsNullObject: Boolean; {virtual;}
end;
function TMethode.IsNullObject: Boolean;
begin
Result := Self = FNullObject;
end;