681 votes

Comment appeler une fonction de classe parent à partir de la fonction de classe dérivée?

Comment appeler la fonction parente d’une classe dérivée à l’aide de C++ ? Par exemple, j’ai une classe appelée , et une classe appelée qui est dérivé de parent. Au sein de chaque classe, il y a une `` fonction. Dans la définition de la fonction d’impression de l’enfant, je voudrais faire un appel aux parents de fonction d’impression. Comment pourrais-je aller à faire cela ?

878voto

Motti Points 32921

Je vais prendre le risque d'énoncer une évidence, vous appelez la fonction, si elle est définie dans la classe de base, il est automatiquement disponible dans la classe dérivée (à moins d' private).

Si il y a une fonction avec la même signature dans la classe dérivée, vous pouvez lever l'ambiguïté en ajoutant la base du nom de la classe suivi de deux-points base_class::foo(...). Vous devriez noter que, contrairement à Java et C#, C++ ne pas avoir un mot-clé pour "la classe de base" (super ou base) depuis C++ supporte l'héritage multiple qui peut conduire à l'ambiguïté.

class left {
public:
    void foo();
};

class right {
public:
    void foo();
};

class bottom : public left, public right {
public:
    void foo()
    {
        //base::foo();// ambiguous
        left::foo();
        right::foo();
    }
};

Par ailleurs, vous ne peut pas dériver directement à partir de la même classe que deux fois depuis qu'il n'y aura aucun moyen de se référer à l'une des classes de base sur les autres.

class bottom : public left, public left { // Illegal
};

228voto

Greg Hewgill Points 356191

Fais quelque chose comme ça:

 void child::print(int x)
{
    parent::print(x);
}
 

35voto

Andrew Rollings Points 8361

Si votre classe de base est appelée , et votre fonction est appelée vous pouvez l’appeler directement à l’aide``

30voto

Andrey Points 2265

En MSVC il y a un mot-clé spécifique de Microsoft pour cela : __super


MSDN : Permet de déclarer explicitement que vous appelez une implémentation de classe de base pour une fonction que vous substituez.


-15voto

user2170324 Points 28
<pre><code></code><p>Exemple de référence.</p></pre>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X