Junior
Mi a polimorfizmus a C/C++ programozási nyelvek kontextusában?
sobes.tech MI
Válasz az MI-től
A polimorfizmus az objektumok azon tulajdonsága, hogy több formát öltenek vagy több típus képviseletére alkalmasak öröklődési hierarchiában. Lehetővé teszi különböző osztályok objektumaival való munkát egy közös felületen keresztül a bázisosztályban.
C++-ban a polimorfizmust két fő módon valósítják meg:
-
Fordítási időben történő polimorfizmus (statikus, ad-hoc polimorfizmus):
- Függvény- és operátoreltöltéssel valósul meg.
- A konkrét függvény vagy operátor kiválasztása fordítási időben történik.
// Függvény túlterhelés példája void print(int a) { /* ... */ } void print(double b) { /* ... */ } -
Futási időben történő polimorfizmus (dinamikus, al-típus polimorfizmus):
- Virtuális függvények és mutatók/kapcsolatok segítségével valósul meg a bázisosztályhoz.
- A konkrét függvény kiválasztása futás közben történik.
- Legalább egy virtuális függvény megléte szükséges a bázisosztályban.
- A virtuális függvény táblát (vtable) használja.
// Dinamikus polimorfizmus példája class Base { public: virtual void show() { /* Implementáció a bázisosztályban */ } }; class Derived : public Base { public: void show() override { /* Felülírt implementáció */ } }; // Használat Base* ptr = new Derived(); ptr->show(); // A Derived::show() hívódik meg
A polimorfizmus lehetővé teszi rugalmasabb és bővíthetőbb kód írását, mivel új osztályokat lehet hozzáadni anélkül, hogy módosítanánk a meglévő kódot, amely a bázisosztállyal dolgozik.