Maison >développement back-end >C++ >Comment appeler la fonction virtuelle d'une classe de base en C après l'avoir remplacée ?

Comment appeler la fonction virtuelle d'une classe de base en C après l'avoir remplacée ?

DDD
DDDoriginal
2024-12-05 11:22:10988parcourir

How Do I Call a Base Class's Virtual Function in C   After Overriding It?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn