[C++] Comment appeler une fonction de classe parent à partir de la fonction de classe dérivée?


Answers

Classe parent donnée nommée Parent et classe enfant nommée Child ,

Vous pouvez faire quelque chose comme ceci:

void Child::print(int x) {
    Parent::print(x);
}
Question

Comment puis-je appeler la fonction parent à partir d'une classe dérivée en utilisant C ++? Par exemple, j'ai une classe appelée parent et une classe appelée child qui est dérivée de parent. Dans chaque classe il y a une fonction d' print . Dans la définition de la fonction d'impression de l'enfant, je voudrais appeler la fonction d'impression des parents. Comment ferais-je cela?




struct a{
 int x;

 struct son{
  a* _parent;
  void test(){
   _parent->x=1; //success
  }
 }_son;

 }_a;

int main(){
 _a._son._parent=&_a;
 _a._son.test();
}

Exemple de référence




Dans MSVC, il existe un mot-clé spécifique à Microsoft pour cela: __super

MSDN: vous permet d'indiquer explicitement que vous appelez une implémentation de classe de base pour une fonction que vous remplacez.

// deriv_super.cpp
// compile with: /c
struct B1 {
   void mf(int) {}
};

struct B2 {
   void mf(short) {}

   void mf(char) {}
};

struct D : B1, B2 {
   void mf(short) {
      __super::mf(1);   // Calls B1::mf(int)
      __super::mf('s');   // Calls B2::mf(char)
   }
};