Sobes.tech
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:

  1. 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) { /* ... */ }
    
  2. 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.