Junior
Wat is override in C++?
sobes.tech AI
Antwoord van AI
Overriding (override) is een mechanisme in objectgeoriënteerd programmeren waarbij een afgeleide klasse haar eigen specifieke implementatie biedt van een virtuele functie gedeclareerd in de basisklasse. Wanneer zo'n functie wordt aangeroepen via een pointer of referentie naar de basisklasse, wordt de implementatie van het daadwerkelijke objecttype (afgeleid of basisklasse) uitgevoerd, afhankelijk van of de functie is overschreven.
Belangrijke punten:
- Alleen van toepassing op virtuele functies.
- De handtekening (naam, returntype, types en aantal parameters) van de overschreven functie in de afgeleide klasse moet exact overeenkomen met die van de te overschrijven functie in de basisklasse.
- Het sleutelwoord
override(vanaf C++11) wordt gebruikt om expliciet aan te geven dat een functie overschreven moet worden. De compiler controleert of de functie in de basisklasse daadwerkelijk bestaat met deze handtekening en geeft een fout als dat niet het geval is. Dit helpt typefouten te voorkomen en maakt de code beter leesbaar.
Voorbeeld:
class Base {
public:
virtual void print() {
// Implementatie van de basisklasse
// ...
}
virtual void display(int x) const {
// Nog een virtuele functie
// ...
}
};
class Derived : public Base {
public:
// Overschrijving van de print functie uit Base
void print() override {
// Specifieke implementatie voor Derived
// ...
}
// Dit is geen overschrijving, omdat const ontbreekt
/*
void display(int x) {
// Compileerfout met override
// ...
}
*/
// Correcte overschrijving van de display functie uit Base
void display(int x) const override {
// Specifieke implementatie voor Derived
// ...
}
};