Polymorphie und Virtual
-
kann mir jemand diese 2 begriffe anhand von C++ Beispielen erläutern? ich verstehe es einfach nicht
-
Ellenlange Diskussion:
http://www.c-plusplus.net/forum/viewtopic-var-t-is-216663.htmlvirtual kommt da bestimmt auch wo vor.
-
das ist aber zu viel, kann mir einer nen kleinen Code geben, woran ich sehe was Virtual bringt? Polymorphie kann man glaub ich nicht so gut an einem konkretten beispiel zeigen, das ist ja eher so ein überbegriff.
-
-
ok dann erkläre ich mal und ihr sagt ob das stimmt.
Durch virtuellen Methoden ruft der Compiler die Methode auf, die in der Klasse vom erstellen Obejekt ist ( wenn die abgeleitete klasse eine methode hat, die gleich heißt und gleiche parameter hat)
welche methode ruft er denn ohne virtual auf?
-
MarkusSteiner schrieb:
welche methode ruft er denn ohne virtual auf?
Kommt ganz auf den jeweiligen Fall an. Wieso probierst dus eigentlich nicht einfach mal aus?
-
Nehmen wir an, wir haben folgenden Zusammenhang:
class Basis { public: void func(); virtual void vfunc(); }; class Abgeleitet : public Basis { public: void func(); virtual void vfunc(); };Bei normalen Objekten, bei denen der Typ schon zur Compilezeit bekannt ist, reicht die normale Überschreibung.
Abgeleitet Objekt; Objekt.func(); // ruft überschriebene Funktion Abgeleitet::func() auf Objekt.vfunc(); // ruft auch Abgeleitet::func() aufvirtualkommt erst zum Zug, wenn während der Laufzeit Unklarheiten bestehen, ob ein Objekt vom Typ der Basisklasse oder der abgeleiteten Klasse ist. Das ist z.B. bei Basisklassenzeigern der Fall:Basis *Zeiger = new Abgeleitet; Zeiger->func(); // nicht virtuell; Basis::func() wird aufgerufen Zeiger->vfunc(); // virtuell; Abgeleitet::vfunc() wird aufgerufen
-
ok danke jetz kapier ichs, wäre das nicht was für die FAQ?
-
MarkusSteiner schrieb:
ok danke jetz kapier ichs, wäre das nicht was für die FAQ?
Ich denke nicht, in guten Büchern und Tutorials wird so was fast immer behandelt, wenn es um Polymorphie und virtuelle Funktionen geht.