Maison >développement back-end >C++ >Comment appeler la fonction virtuelle d'une classe de base en C après l'avoir remplacée ?
Appel de la fonction virtuelle d'une classe de base en C après substitution
Dans le développement logiciel, il est courant de rencontrer des scénarios dans lesquels vous devez appeler une base la fonction de classe à partir d’une classe dérivée, même si vous avez remplacé cette fonction. En C , contrairement à Java, vous ne pouvez pas utiliser une simple syntaxe super.funcname() pour y parvenir.
Considérez l'extrait de code suivant :
class Foo { public: int x; virtual void printStuff() { std::cout << x << std::endl; } }; class Bar : public Foo { public: int y; void printStuff() { // I would like to call Foo.printStuff() here... std::cout << y << std::endl; } };
Dans cet exemple, Bar hérite de Foo et remplace la fonction printStuff(). Cependant, vous souhaiterez peut-être conserver la fonctionnalité d'origine de Foo::printStuff() dans certains contextes.
Pour appeler la fonction printStuff() de la classe de base en C , vous devez nommer explicitement la classe de base en utilisant :: opérateur. Voici comment :
class Bar : public Foo { // ... void printStuff() override { // help the compiler to check Foo::printStuff(); // calls base class' function } };
Dans ce code modifié, la fonction de classe de base Foo::printStuff() est appelée dans la fonction remplacée Bar::printStuff(). Le mot-clé override aide le compilateur à vérifier que la fonction remplace effectivement une fonction de classe de base.
En appelant explicitement la fonction de classe de base, vous bénéficiez de la flexibilité nécessaire pour utiliser à la fois les implémentations de classe de base et dérivées de printStuff(). Cela peut être utile dans divers scénarios, comme appeler la fonction d'origine pour effectuer des tâches courantes avant ou après l'implémentation remplacée.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!