Junior
Kas yra polimorfizmas C/C++ programavimo kalbų kontekste?
sobes.tech AI
Atsakymas iš AI
Polimorfizmas yra objekto savybė turėti daugybę formų arba atstovauti kelis tipus paveldėjimo hierarchijoje. Tai leidžia dirbti su skirtingų klasių objektais per bendrą pagrindinio klases sąsają.
C++ polimorfizmas įgyvendinamas dviem pagrindiniais būdais:
-
Kompiliatoriaus laiko polimorfizmas (statinis, ad-hoc polimorfizmas):
- Įgyvendinamas per funkcijų ir operatorių perkrovimą.
- Konkretus funkcijos ar operatoriaus pasirinkimas įvyksta kompiliavimo metu.
// Funkcijų perkrovimo pavyzdys void print(int a) { /* ... */ } void print(double b) { /* ... */ } -
Vykdymo laiko polimorfizmas (dinaminis, subtipų polimorfizmas):
- Įgyvendinamas per virtualias funkcijas ir rodykles/nuorodas į pagrindinę klasę.
- Konkretios funkcijos pasirinkimas vykdymo metu.
- Reikalauja, kad pagrindinėje klasėje būtų bent viena virtuali funkcija.
- Naudoja virtualių funkcijų lentelę (vtable).
// Dinaminio polimorfizmo pavyzdys class Base { public: virtual void show() { /* Pagrindinės klasės įgyvendinimas */ } }; class Derived : public Base { public: void show() override { /* Perrašyta įgyvendinimas */ } }; // Naudojimas Base* ptr = new Derived(); ptr->show(); // Kvies Derived::show()
Polimorfizmas leidžia rašyti lankstesnį ir išplečiamą kodą, nes naujos klasės gali būti pridėtos be esamo kodo keitimo, kuris dirba su pagrindine klase.