![]() |
AW: Meine Probleme mit Delphi-OOP ...
Zitat:
Verdecke ich ich einfach die original Methode, dann wird hier kein Eintrag in der VMT hinterlegt und ich muss sehr genau wissen ab welcher Stufe der Vererbung die entsprechende Methode mit reintroduce verdeckt wurde. Wie verhält es sich nun bei Weiterveerbung? Sidn die Subklassen dann in der VMT ab hier auf die verdeckte Methode des Vorfahr bezogen oder wieder aufgrund der VMT auf die Superklasse? Ich habe tatsächlich sehr viel dazugelernt. Bisher hätte ich nicht erwartet, dass Delphi sich im Gegensatz zu anderen OOP-Sprachen doch so entscheidende Abweichungen erlaubt. Darüber hinaus habe ich auch mal Experimente mit der Mainform angestellt, weil ich jetzt wirklich wissen wollte, ob die globale Variable für das MainForm überflüssig ist. Und uups, in der Tat es ist so, wenn ich das Fensterhandle des MainForms auslesen will, muss ich Application.Handle verwenden und tatsächlich nicht MainForm.Handle. Vielen Dank für diesen Augenöffner. |
AW: Meine Probleme mit Delphi-OOP ...
Mit der neuen RTTI könnte man zwar theoretisch auf auf die VMT und virtuelle Methoden verzichten, da man ja die Funktionen alle suchen und über die RTTI aufrufen könnte. (solange man die neue RTTI nicht einschränkt/abschaltet)
Bzw. über Published-Methoden der alten RTTI ginge es auch schon. Aber schneller ist es über die VMT, denn ein indizierter Zugriff und man hat die aktuelle Methode. Nachteil über die RTTI: Man könnte Methoden nicht verdecken, da sie dann ja automatisch überschrieben würden, wenn man ausnahmslos das Aktuellste sucht. Und Klassenmethoden über eine Objektinstanz aufgerufen wären vermutlich nicht überschreibbar. |
AW: Meine Probleme mit Delphi-OOP ...
Übrigens hat man im neuen C++ Standard ein (optionales) override eingeführt, weil die bisherige Methode zu sehr subtilen Fehlern führen kann.
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:16 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz