Junior
Čo je to override v C++?
sobes.tech AI
Odpoveď od AI
Prepisovanie (override) je mechanizmus v objektovo orientovanom programovaní, kde odvodená trieda poskytuje svoju vlastnú špecifickú implementáciu virtuálnej funkcie, deklarovanej v základnej triede. Keď sa takáto funkcia volá cez ukazovateľ alebo referenciu na základnú triedu, vykoná sa implementácia z reálneho typu objektu (odvodeného alebo základného), v závislosti od toho, či bola funkcia prepísaná.
Hlavné body:
- Platí iba pre virtuálne funkcie.
- Podpis (názov, typ návratovej hodnoty, typy a počet parametrov) funkcie, ktorá sa prepíše v odvodenom type, musí presne zodpovedať podpisu funkcie v základnej triede.
- Kľúčové slovo
override(od C++11) sa používa na explicitné označenie zámeru prepísať funkciu. Kompilátor skontroluje, či funkcia v základnej triede skutočne existuje s takýmto podpisom, a ak nie, vypíše chybu. To pomáha predísť preklepom a robí kód čitateľnejším.
Príklad:
class Base {
public:
virtual void print() {
// Implementácia základnej triedy
// ...
}
virtual void display(int x) const {
// Ďalšia virtuálna funkcia
// ...
}
};
class Derived : public Base {
public:
// Prepisovanie funkcie print z Base
void print() override {
// Špecifická implementácia pre Derived
// ...
}
// Toto nie je prepisovanie, lebo chýba const
/*
void display(int x) {
// Chyba kompilácie s override
// ...
}
*/
// Správne prepisovanie funkcie display z Base
void display(int x) const override {
// Špecifická implementácia pre Derived
// ...
}
};