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