Einzelnen Beitrag anzeigen

Caps

Registriert seit: 23. Mär 2006
Ort: Leipzig
299 Beiträge
 
#31

AW: Rekursives Freigeben einer TStringList // Compilerfehler

  Alt 16. Jun 2020, 12:38
Virtuelle und dynamische Methoden können überschrieben werden. Wenn eine solche Methode einer Instanz aufgerufen wird, wird die Virtual Method Table (VMT) durchlaufen, ausgehend von der Klasse der Instanz in der Hierarchie aufsteigend, bis eine Implementation gefunden wird. Die wird dann abgearbeitet. Normalerweise möchte man die Methode aber nicht komplett ersetzen, sondern nur erweitern, weswegen man dann inherited aufruft, um die nächste Implementation in den höher gelegenen Klassen auszuführen.
Ok, ich glaub das wird OT

Aber warum wird dann bei Objects [i].Free der Destruktor von TStringTree aufgerufen?
Woher weiß denn der Compiler, welcher Typ da drin steckt?
Also was ich meine ist: wenn ich von einer Basisklasse zwei verschiedene Klassen ableite, und dann den Destruktor der Basisklasse (TObject) aufrufe, dann kann der Compiler doch gar nicht entscheiden, welcher Typ nun wirklich an dem Zeiger dranhängt, oder bin ich völlig abwegig?
Vermutlich müsste das mal in einen anderen Thread (OOP oder so ^^)
"Der Mode cmCFS8 ist prohibitär und von mir entwickelt."
  Mit Zitat antworten Zitat