Was ist eine virtuelle Methode in C++?Was ist eine virtuelle Methode in C++?
Antwort
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!
Es ist eine Methode, die anstelle von Compile-Zeit zur Laufzeit nachgeschlagen wird. Dies ermöglicht Dinge wie Polymorphie zu arbeiten.
Vtables sind ein Implementierungsdetail. Der C++ - Standard sagt nichts über "vtables" aus. – fredoverflow
@FredOverflow: Aus Neugier, welche Implementierungen verwenden keine vtable? –
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. –
Virtual functions erfunden wurden, damit Sie nicht über Typen wechseln.
- 1. eine geschützte virtuelle Methode in C++
- 2. virtuelle Methode überschreibt in C++
- 3. C++ virtuelle Methode überschrieben
- 4. Was ist eine pseudo-virtuelle Funktion in C++?
- 5. Was ist eine "statische Methode" in C#?
- 6. Unable virtuelle C# Methode
- 7. Warum ist Object.ToString eine virtuelle Methode?
- 8. Was ist eine Kernel-basierte virtuelle Maschine?
- 9. C++ virtuelle Methode in der Kinderklasse aufrufen
- 10. Out-Linie für virtuelle Methode in C#
- 11. Was ist eine globale Methode?
- 12. was die C/C++ virtuelle Maschine spec
- 13. Was virtuelle neuen geschützt ist
- 14. C++ initialisiert für nicht-virtuelle Methode angegeben
- 15. Überschreiben von Klassen in C# und Zugriff auf eine virtuelle Methode, die eine Override-Methode verwendet
- 16. Was ist eine generative Methode?
- 17. Was ist eine Bootstrap-Methode?
- 18. Was ist Vtable in C++
- 19. Was ist eine polymorphe Methode in Java?
- 20. Was ist eine Stub-Methode in MeteorJS?
- 21. rein virtuelle Methode namens
- 22. C++ überschreibt reine virtuelle Methode mit rein virtueller Methode
- 23. C++: Überladene nicht-virtuelle Methode und virtuelle Methode beide mit dem gleichen Namen verursacht Problem
- 24. virtuelle vs nicht-virtuelle Mehrfachvererbung in C++
- 25. Virtuelle Methode nicht aufgerufen
- 26. virtuelle Datei? in c/C++ oder C#
- 27. Versuch aufrufen virtuelle Methode
- 28. Versuch, virtuelle Methode aufzurufen
- 29. C++ virtuelle Funktion in Konstruktor
- 30. Warum wird dieser C# -Code ordnungsgemäß kompiliert, wenn eine mehrdeutige virtuelle Methode vorhanden ist?
Versuchen Sie .... –
@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
möglich Duplikat [Kann jemand C++ virtuelle Methoden erklären?] (Http://stackoverflow.com/questions/2391679/can-someone-explain-c-virtual-methods) –