2010-11-21 4 views
4

Was ist eine virtuelle Methode in C++?Was ist eine virtuelle Methode in C++?

+3

Versuchen Sie .... –

+3

@Mitch Weizen; Ich stimme Ihnen zu, da eine solche grundsätzliche Frage erforscht werden sollte, anstatt beiläufig gefragt zu werden, insbesondere ohne Kontext. – BeemerGuy

+1

möglich Duplikat [Kann jemand C++ virtuelle Methoden erklären?] (Http://stackoverflow.com/questions/2391679/can-someone-explain-c-virtual-methods) –

Antwort

6

eine virtuelle Funktion ermöglicht Klassen abgeleitet, die Umsetzung durch die Basisklasse zur Verfügung gestellt zu ersetzen. Der Compiler stellt sicher, dass die Ersetzung immer dann aufgerufen wird, wenn das fragliche Objekt tatsächlich von der abgeleiteten Klasse stammt, selbst wenn auf das Objekt von einem Basiszeiger statt von einem abgeleiteten Zeiger zugegriffen wird. Dadurch können die Algorithmen in der Basisklasse in der abgeleiteten Klasse ersetzt werden, auch wenn die Benutzer die abgeleitete Klasse nicht kennen.

Die abgeleitete Klasse kann entweder vollständig ersetzen („Übersteuerung“), um die Basiselementfunktion oder die abgeleitete Klasse kann zum Teil ersetzen („erweitern“), um die Basiselementfunktion. Letzteres wird erreicht, indem die abgeleitete Klassenmitgliedsfunktion bei Bedarf die Basisklassenmitgliedsfunktion aufruft.

Erfahren Sie hier mehr:

http://www.codersource.net/c/c-tutorials/c-virtual-function.aspx

Dies ist jedoch sehr einfach ist. Versuchen Sie es mit Google, bevor Sie hierher kommen, um zu fragen!

0

Es ist eine Methode, die anstelle von Compile-Zeit zur Laufzeit nachgeschlagen wird. Dies ermöglicht Dinge wie Polymorphie zu arbeiten.

+1

Vtables sind ein Implementierungsdetail. Der C++ - Standard sagt nichts über "vtables" aus. – fredoverflow

+0

@FredOverflow: Aus Neugier, welche Implementierungen verwenden keine vtable? –

+1

Die meisten praktischen Implementierungen neigen dazu, eine vtable zu verwenden, zumindest soweit ich weiß. Aber Fred macht einen gültigen Punkt - die Frage stellt sich die Frage, was eine virtuelle Methode in C++ ist, wo C++ die Sprache ist, wie sie in ihrem Standard definiert ist. Die Tatsache, dass die Implementierung eine vtable verwenden könnte, ist interessant, aber es ist keine direkte Antwort auf die Frage wie gesagt. –

Verwandte Themen