Junior
Ce este override în C++?
sobes.tech AI
Răspuns de la AI
Suprascrierea (override) este un mecanism în programarea orientată pe obiecte, în care o clasă derivată furnizează propria implementare specifică a unei funcții virtuale declarate în clasa de bază. Când o astfel de funcție este apelată printr-un pointer sau referință la clasa de bază, se va executa implementarea din tipul real al obiectului (derivat sau de bază), în funcție dacă funcția a fost suprascrisă.
Puncte cheie:
- Se aplică doar funcțiilor virtuale.
- Semnătura (numele, tipul de returnare, tipurile și numărul de parametri) funcției care suprascrie în clasa derivată trebuie să coincidă exact cu semnătura funcției suprascrise în clasa de bază.
- Cuvântul cheie
override(începând cu C++11) este folosit pentru a indica explicit intenția de a suprascrie o funcție. Compilatorul va verifica dacă funcția din clasa de bază există cu această semnătură și va genera o eroare dacă nu. Acest lucru ajută la evitarea greșelilor de tastare și face codul mai ușor de citit.
Exemplu:
class Base {
public:
virtual void print() {
// Implementarea clasei de bază
// ...
}
virtual void display(int x) const {
// O altă funcție virtuală
// ...
}
};
class Derived : public Base {
public:
// Suprascrierea funcției print din Base
void print() override {
// Implementare specifică pentru Derived
// ...
}
// Aceasta nu este o suprascriere, deoarece lipsește const
/*
void display(int x) {
// Eroare de compilare cu override
// ...
}
*/
// Suprascriere corectă a funcției display din Base
void display(int x) const override {
// Implementare specifică pentru Derived
// ...
}
};