Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.131 Beiträge
 
Delphi 12 Athens
 
#4

AW: D2007 Vererbung Constructor

  Alt 27. Jul 2012, 14:26
Es wird die Methode (Create) verwendet, welche im Basistyp deklariert ist.
Mit Virtual wird dort allerdings ein Eintrag in der VMT der Klasse erstellt.

Und jedesmal, wenn diese Methode nun aufgerufen wird, schaut Delphi in der VMT nach, was "aktuell" dort für eine Methode verlinkt ist.

Aktuell = Der Typ, welcher für die Erstellung der Klasse verwendet wurde, bzw. bei solch einer "class method" (in diesem Fall ein constructor) was in der VMT des Typs deklariert ist, welcher in deiner Variable gespeichert wurde.
Also die Methode welche in diesem Typen als letzes per Override dort eingetragen wurde.


Wäre dein "Parameter" z.B. vom Typ TClass, würde in TObject nachgesehn, dort steht nur ein nichtvirtuelles Create und somit würde direkt das Create des TObject verwendet, selbst wenn es im gespeichertem Typ ein "neueres" Create gäbe.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat