Virtuální metody v C++ jsou klíčovou součástí polymorfismu a jsou používány v kontextu dědičnosti.
Virtuální metoda je metoda, kterou deklarujeme v základní třídě a přepisujeme (override) v odvozené třídě (v potomkovi).
Tyto metody jsou v rodiči deklarovány pomocí klíčového slova virtual.
Syntax:
Přepisování virtuálních metod:
V odvozené třídě (v potomkovi) můžeme přepsat virtuální metodu tak, aby poskytovala specifickou implementaci pro tuto třídu.
Příklad:
Vlastnosti:
Polymorfismus: Virtuální metody umožňují polymorfismus v C++, což znamená, že ukazatel na základní třídu může být použit k volání přepsané metody odvozené třídy.
Virtuální destruktory: Je důležité používat virtuální destruktory v základních třídách, aby při destrukci objektu prostřednictvím ukazatele na základní třídu byl volán správný destruktor.
Uvažujte software pro správu zaměstnanců v organizaci:
Nechť má kód jednoduchou rodičovskou třídu Employee, která obsahuje virtuální funkce jako raiseSalary(), transfer(), promote() atd. Různé typy zaměstnanců, jako jsou manažeři, inženýři atd., mohou mít vlastní implementace virtuálních funkcí obsažených v rodičovské třídě Employee.
V našem hotovém softwaru stačí všude předat seznam zaměstnanců a volat příslušné funkce, aniž bychom znali typ zaměstnance. Například můžeme snadno zvýšit plat všech zaměstnanců iterací přes seznam zaměstnanců. Každý typ zaměstnance může mít ve své třídě vlastní logiku, ale nemusíme se o ně starat, protože pokud je funkce raiseSalary() přítomna pro určitý typ zaměstnance, zavolá se pouze tato funkce.