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

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