class b : public a ;
eine von der Klasse a abgeleitet Klasse. Alle public und protected Member von a sind von b zugänglich.
Virtuelle Memberfunktionen , sichern
bei Objektumwandlungen immer die Ausführung der richtigen
Memberfunktion.
Wird einer Referenz oder einem Zeiger auf die Basisklasse eine
Referenz oder ein Zeiger auf eine abgeleitete Instanz zugewiesen, so wird
im Normalfall (ohne Virtualität) bei Aufruf der Memberfunktion
über diese Referenz bzw. diesen Zeiger die Memberfunktion der Basisklasse
aufgerufen. Ist die überladene Memberfunktion als virtual deklariert,
so ,,merkt`` sich das Objekt seinen Ursprung und ruft die Memberfunktion der
abgeleiteten Klasse auf.
Ohne Virtualität:
class a { void f() { cout << ''a''; } } class b : public a { void f() { cout << ''b''; } } main() { b x; a& y = x; y.f();} }Liefert: ,, a ``
Mit Virtualität:
class a { virtual void f() { cout ... } } class b : public a { virtual void f() { cout ... } } main() { b x; a& y = x; y.f(); }Liefert: ,, b ``