Sobes.tech
Junior

Mi az az override a C++-ban?

sobes.tech MI

Válasz az MI-től

Az felülírás (override) egy mechanizmus az objektumorientált programozásban, ahol az származtatott osztály saját specifikus megvalósítást biztosít egy virtuális függvényből, amelyet az alap osztályban deklaráltak. Amikor ilyen függvényt az alap osztályra mutató pointer vagy referencia segítségével hívnak meg, a tényleges objektum típusának (származtatott vagy alap) megfelelő megvalósítás kerül végrehajtásra, attól függően, hogy a függvényt felülírták-e.

Főbb pontok:

  • Csak virtuális függvényekre vonatkozik.
  • A felülíró függvény aláírásának (név, visszatérési típus, paraméterek típusai és száma) pontosan meg kell egyeznie az alap osztályban lévő felülírt függvény aláírásával.
  • A override kulcsszó (a C++11-től kezdve) egyértelműen jelzi a függvény felülírásának szándékát. A fordító ellenőrzi, hogy az alap osztályban valóban létezik-e ilyen aláírással függvény, és hibát jelez, ha nem. Ez segít elkerülni a gépelési hibákat és olvashatóbbá teszi a kódot.

Példa:

class Base {
public:
    virtual void print() {
        // Az alap osztály megvalósítása
        // ...
    }

    virtual void display(int x) const {
        // Egy másik virtuális függvény
        // ...
    }
};

class Derived : public Base {
public:
    // A print függvény felülírása a Base-ből
    void print() override {
        // Különleges megvalósítás a Derived számára
        // ...
    }

    // Ez nem felülírás, mert hiányzik a const
    /*
    void display(int x) {
        // Fordítási hiba az override miatt
        // ...
    }
    */

    // Helyes felülírása a display függvénynek a Base-ből
    void display(int x) const override {
        // Különleges megvalósítás a Derived számára
        // ...
    }
};