Sobes.tech
Junior

Šta je polimorfizam u kontekstu programskih jezika C/C++?

sobes.tech АИ

Одговор од АИ

Polimorfizam je svojstvo objekata da imaju više oblika ili da predstavljaju više tipova u hijerarhiji nasleđivanja. Omogućava rad sa objektima različitih klasa putem zajedničkog interfejsa osnovne klase.

U C++-u, polimorfizam se implementira na dva glavna načina:

  1. Polimorfizam u vreme kompilacije (staticki, ad-hoc polimorfizam):

    • Realizuje se pomoću preopterećenja funkcija i operatora.
    • Izbor konkretne funkcije ili operatora vrši se u vreme kompilacije.
    // Primer preopterećenja funkcija
    void print(int a) { /* ... */ }
    void print(double b) { /* ... */ }
    
  2. Dinamički, vreme izvršenja, polimorfizam (podtip polimorfizam):

    • Realizuje se pomoću virtuelnih funkcija i pokazivača/veza na osnovnu klasu.
    • Izbor konkretne funkcije koja će biti pozvana vrši se u vreme izvršenja.
    • Zahteva da u osnovnoj klasi postoji bar jedna virtuelna funkcija.
    • Koristi tabelu virtuelnih funkcija (vtable).
    // Primer dinamičkog polimorfizma
    class Base {
    public:
        virtual void show() { /* Implementacija u osnovnoj klasi */ }
    };
    
    class Derived : public Base {
    public:
        void show() override { /* Prepisana implementacija */ }
    };
    
    // Upotreba
    Base* ptr = new Derived();
    ptr->show(); // Poziva Derived::show()
    

Polimorfizam omogućava pisanje fleksibilnijeg i proširivijeg koda, jer se nove klase mogu dodavati bez izmene postojećeg koda koji radi sa osnovnom klasom.