virtual vor einer Methode
-
Hallo, was bedeutet wenn vor einer Methode in einer Klasse "virtual" steht, also
virtual void set(int h, int m);??
-
-
Das bedeutet, dass diese Methode einen Eintrag im vtable der Klasse erhält. Abgeleitete Klassen können diese Methode "überschreiben". Letzteres bedeutet, dass man über eine(n) Basisklassenzeiger oder -referenz die Methode der konkreten Klasse aufrufen kann.
class Base { public: virtual void func() { std::cout << "Base::func"; } virtual ~Base() {} }; class Derived : public Base { public: void func() override { std::cout << "Derived::func"; } }; void CallFunc( Base& base ) { base.func(); } int main() { Base base; Derived deriv; CallFunc( base ); // "Base::func" CallFunc( deriv ); // "Derived::func" }
-
Decimad schrieb:
Das bedeutet, dass diese Methode einen Eintrag im vtable der Klasse erhält.
Wie das technisch abläuft ist nicht weiter spezifiziert. Es gibt auch andere Methoden.
-
Danke für die Korrektur. Ich wollte den Begriff vtable aber auf jeden Fall genannt haben, hätte ich bloß anders tun sollen.