\"Frühe Bindung\": beim Aufruf einer Element-Funktion wird die Sprung-Adresse bereits zum Übersetzungs-Zeitpunkt festgelegt.
Beispiel:
Vorteil: Speicherplatzsparend, schnell
Nachteil: Klasse Circle muss MoveTo neu definieren, obwohl \"logisch\" gleicher Ablauf
\"Späte Bindung\": beim Aufruf der Element-Funktionen wird die tatsächliche Sprungadresse erst zur Laufzeit
ermittelt (Compiler erzeugt einen \"indirekten\" Sprung über die sogenannte V-Table des Objekts).
Erreicht man in C++ mittels Schlüsselwort virtual.
Nachteil: mehr Speicherplatz, langsamer
Vorteil: Klasse Circle muss MoveTo nicht neu definieren, kann geerbte Funktion verwenden.
Beispiel:
Durch den Einsatz der späten Bindung wird \"Polymorphie\" (=Vielgestaltigkeit) sichergestellt: die gleiche
Methode ist je nach Objekt-Art unterschiedlich realisiert.
Wann muss eine Methode virtuell sein?
- wenn sie in den abgeleiteten Klassen unterschiedlich implementiert ist
- und * wenn Sie in einer anderen Methode der Basisklasse aufgerufen wird oder
* über einen Objekt-Zeiger vom Typ \"Zeiger auf Basisklasse\" aufgerufen wird
Bsp.: Point *tab [MAXANZ] = ... // speichert Zeiger auf Point-,
for (int i=0; iShow ();
|