Wie wird Polymorphie vom Compiler umgesetzt?

27.02.2007

In der Praxis relativ unwichtig, aber dennoch interessant ist die Frage, wie ein Compiler Polymorphie umsetzt.

Bei Polymorphie entscheidet der Compiler zur Laufzeit welche Funktion aufgerufen werden muss, was auch als spätes Binden (late binding) bezeichnet wird. Dazu legt der Compiler für jede polymorphe Klasse eine Tabelle mit Pointern auf die virtuellen Funktionen an. Nun enthält jede Instanz einer polymorphen Klasse einen Pointer auf die passende Tabelle.

Zur Laufzeit wählt das Programm dann den richtigen Pointer auf die gewünschte Funktion (diese liegen immer in einer vorgegebenen Reihenfolge in der Tabelle) aus und springt dorthin. (Es wird ein call ausgeführt um die Ausführung des Programms hinter der Funktion vorsetzen zu können).

Deine Meinung ist gefragt:


Es wurden noch keine Kommentare geposted.

Sei der Erste und teile uns Deine Meinung mit.

Einen neuen Kommentar erstellen...