Thema: Delphi TObject = Object ?

Einzelnen Beitrag anzeigen

TheAn00bis

Registriert seit: 7. Jun 2004
386 Beiträge
 
#14

Re: TObject = Object ?

  Alt 31. Mär 2006, 13:39
Zitat von jbg:
TObject is eine class und kein object. Die beiden Arten von "Klassen" sind nicht binärkompatibel. So liegt bei class die VMT immer an Offset 0, wohingegen bei object die VMT erst dann eingefügt wird, wenn die erste virtuelle Methode zum Objekt hinzukommt. Alle vorher definierten Felder verschieben also den Offset des VMT-Zeigers bei object. Die VMT ist bei class eine Metaklasse (beschreibt also die Klasse selbst). Dies ermöglicht die Nutzung von virtuellen Konstruktoren und virtuellen Klassenmethoden (Stichwort: TClass = class of TObject). Bei object wird die VMT ihrem Namen mehr gerecht, denn dort ist sie nur eine Tabelle der virtuellen Methoden (Virtual Method Table) mit einem zusätzlichen DMT-Zeiger (Dynamic Method Table).
Heißt das, dass ich ein Objekt (deklariert durch Txyz = Object) nicht erst über das .Create oder einen anderen Konstruktor erzeugen muss, sondern einfach eine Prozedur des Objekts ausführen kann? Oder hab ich das falsch verstanden?
  Mit Zitat antworten Zitat