6 Stimmen

Wie funktioniert der Aufruf von virtuellen Methoden in C++?

Wie funktioniert Virtueller Methodenaufruf in C++ arbeiten?

8voto

Starkey Punkte 9595

Durch virtuelle Tische.

Lesen Sie diesen Artikel, http://en.wikipedia.org/wiki/Virtual_table .

Ich könnte es hier erklären, aber die Wikipedia macht es besser als ich.

5voto

sbi Punkte 211669

Der C++-Standard legt nicht fest, wie der Mechanismus der virtuellen Funktionen implementiert werden soll.

Ich denke, dass alle aktuellen C++-Compiler virtuelle Tabellen verwenden.
Bei Klassen, die mindestens eine virtuelle Funktion enthalten, ist es üblich, einen versteckten Zeiger auf eine sogenannte virtuelle Tabelle zu haben, in der die Adressen der virtuellen Funktionen für eine bestimmte Klasse in compilerspezifischer Reihenfolge eingetragen sind.
Jeder Konstruktor setzt dann diesen versteckten Zeiger auf die virtuelle Tabelle der Klasse, zu der er gehört.

0voto

Daniel Mošmondor Punkte 19346

Jede Klasse mit mindestens einer virtuellen Methode hat eine virtuelle Tabelle - eine Tabelle mit Zeigern auf Funktionen, die Methoden dieser Klasse sind.

Es wird in COM ausgiebig verwendet.

0voto

Carthi Punkte 265

Mit VTables und Funktionszeigern. Die Funktionszeiger der virtuellen Funktionen werden in der VTable aufgelistet
MFC verwendet eine Message Map anstelle einer virtuellen Funktion, was die Größenbeschränkung verringert. Wenn wir mehrere virtuelle Funktionen verwenden, wird die VTable am Ende sehr groß.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X