Junior
Qu'est-ce que la surcharge (override) en C++?
sobes.tech IA
Réponse de l'IA
La surcharge (override) est un mécanisme en programmation orientée objet, où une classe dérivée fournit sa propre implémentation spécifique d'une fonction virtuelle déclarée dans la classe de base. Lorsqu'une telle fonction est appelée via un pointeur ou une référence à la classe de base, c'est l'implémentation du type réel de l'objet (dérivé ou de base) qui sera exécutée, en fonction de si la fonction a été surchargée.
Points clés :
- S'applique uniquement aux fonctions virtuelles.
- La signature (nom, type de retour, types et nombre de paramètres) de la fonction qui surcharge dans la classe dérivée doit correspondre exactement à celle de la fonction surchargée dans la classe de base.
- Le mot-clé
override(à partir de C++11) est utilisé pour indiquer explicitement l'intention de surcharger une fonction. Le compilateur vérifiera si la fonction de la classe de base existe réellement avec cette signature et générera une erreur si ce n'est pas le cas. Cela aide à éviter les fautes de frappe et rend le code plus lisible.
Exemple :
class Base {
public:
virtual void print() {
// Implémentation de la classe de base
// ...
}
virtual void display(int x) const {
// Une autre fonction virtuelle
// ...
}
};
class Derived : public Base {
public:
// Surcharge de la fonction print de Base
void print() override {
// Implémentation spécifique pour Derived
// ...
}
// Ce n'est pas une surcharge, car il manque const
/*
void display(int x) {
// Erreur de compilation avec override
// ...
}
*/
// Surcharge correcte de la fonction display de Base
void display(int x) const override {
// Implémentation spécifique pour Derived
// ...
}
};