Junior
Čo je to polymorfizmus v kontexte programovacích jazykov C/C++?
sobes.tech AI
Odpoveď od AI
Polymorfizmus je vlastnosť objektov, ktorá umožňuje mať mnoho foriem alebo reprezentovať niekoľko typov v hierarchii dedičnosti. Umožňuje pracovať s objektmi rôznych tried cez spoločné rozhranie základnej triedy.
V C++ je polymorfizmus implementovaný dvoma hlavnými spôsobmi:
-
Polymorfizmus v čase kompilácie (statický, ad-hoc polymorfizmus):
- Je realizovaný pomocou preťaženia funkcií a operátorov.
- Výber konkrétnej funkcie alebo operátora sa vykonáva počas kompilácie.
// Príklad preťaženia funkcií void print(int a) { /* ... */ } void print(double b) { /* ... */ } -
Dynamický, čas behu, polymorfizmus (podtypový polymorfizmus):
- Je realizovaný pomocou virtuálnych funkcií a ukazovateľov/odkazov na základnú triedu.
- Výber konkrétnej funkcie, ktorá bude volaná, sa vykonáva počas behu.
- Vyžaduje, aby v základnej triede bola aspoň jedna virtuálna funkcia.
- Používa tabuľku virtuálnych funkcií (vtable).
// Príklad dynamického polymorfizmu class Base { public: virtual void show() { /* Implementácia v základnej triede */ } }; class Derived : public Base { public: void show() override { /* Prepisaná implementácia */ } }; // Použitie Base* ptr = new Derived(); ptr->show(); // Volá sa Derived::show()
Polymorfizmus umožňuje písať flexibilnejší a rozšíriteľnejší kód, pretože nové triedy môžu byť pridané bez zmeny existujúceho kódu, ktorý pracuje so základnou triedou.