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
overridekulcsszó (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
// ...
}
};