hmmm...
Siehst du da auch nur
ein Feld? Ich nicht.
Delphi-Quellcode:
TObject = class
constructor Create;
procedure Free;
class function InitInstance(Instance: Pointer): TObject;
procedure CleanupInstance;
function ClassType: TClass;
class function ClassName: ShortString;
class function ClassNameIs(const Name: string): Boolean;
class function ClassParent: TClass;
class function ClassInfo: Pointer;
class function InstanceSize: Longint;
class function InheritsFrom(AClass: TClass): Boolean;
class function MethodAddress(const Name: ShortString): Pointer;
class function MethodName(Address: Pointer): ShortString;
function FieldAddress(const Name: ShortString): Pointer;
function GetInterface(const IID: TGUID; out Obj): Boolean;
class function GetInterfaceEntry(const IID: TGUID): PInterfaceEntry;
class function GetInterfaceTable: PInterfaceTable;
function SafeCallException(ExceptObject: TObject;
ExceptAddr: Pointer): HResult; virtual;
procedure AfterConstruction; virtual;
procedure BeforeDestruction; virtual;
procedure Dispatch(var Message); virtual;
procedure DefaultHandler(var Message); virtual;
class function NewInstance: TObject; virtual;
procedure FreeInstance; virtual;
destructor Destroy; virtual;
end;
... und Methoden kosten dich doch nur den Zeiger auf die
VMT.
Auch wenn es hier nicht um's Für & Wider geht: Das Argument ist einfach nicht richtig.
Eine Klasseninstanz kostet dich genau 4Byte mehr als ein record, der die gleichen Informationen halten soll.
Das ist
IMHO ein mehr als faires Geschäft.
Das soll jetzt auch nicht ausarten... Ich wollte ihm nur den Tip geben, schließlich wollte er seinen Code aufräumen.