IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Guru Of the Week n° 39 : héritage multiple - troisième partie [Tutoriel]


Sujet :

C++

  1. #1
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Points : 15 620
    Points
    15 620
    Par défaut Guru Of the Week n° 39 : héritage multiple - troisième partie
    Il est facile de redéfinir des fonctions héritées virtuelles – tant que vous n'essayez pas de redéfinir une fonction virtuelle qui a la même signature dans les deux classes de base. Dans ce troisième et dernier Guru of the week consacré à l'héritage multiple, Herb Sutter aborde la redéfinition de fonctions virtuelles présentes dans les deux classes parents.

    Guru Of the Week n° 39 : héritage multiple - troisième partie

    Dans Héritage multiple en C++, Joly Loïc présente l'héritage multiple en détail.

    Retrouver l'ensemble des Guru of the Week sur la page d'index.

  2. #2
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2012
    Messages : 6
    Points : 8
    Points
    8
    Par défaut
    Bonjour,

    merci pour cet article.
    Une fois le renommage de la fonction virtuelle effectué, on appelle les deux méthodes avec les ReadBufB1 et ReadBufB2, cependant je ne comprends pas bien ce dit renommage :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    class D1 : public B1 {
    public:
        virtual int ReadBufB1( const char* p ) = 0;
     
        int ReadBuf( const char* p ) {  // redéfinition de l'héritage
            return ReadBufB1( p );      // pour appeler la nouvelle fonction
        }
    };
    Ici la fonction hérité appelle la nouvelle fonction mais en quoi cela change ça signature ? Au final, n'utilise-t-on pas ReadBufB1 ? Il font donc redéfinir ReadBufB1 dans la classe D de la même manière qu'il est définit dans la classe B1 ?

    Bonne soirée

  3. #3
    Membre régulier
    Inscrit en
    Décembre 2003
    Messages
    87
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 87
    Points : 87
    Points
    87
    Par défaut
    Citation Envoyé par Factor22 Voir le message
    Ici la fonction hérité appelle la nouvelle fonction mais en quoi cela change ça signature ? Au final, n'utilise-t-on pas ReadBufB1 ? Il font donc redéfinir ReadBufB1 dans la classe D de la même manière qu'il est définit dans la classe B1 ?
    Le but ici est de permettre aux classes B1 et B2 d'appeler la fonction virtuelle définie dans D. Grace aux classes intermédiaires on obtient le comportement suivant:

    B1::ReadBuf -> D1::ReadBuf -> D1::ReadBufB1 -> D::ReadBufB1

    De cette manière on peut modifier le comportement de B1 dans notre classe dérivée D (ou dans les dérivées de D).

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2012
    Messages : 6
    Points : 8
    Points
    8
    Par défaut
    Merci pour ton explication, je crois que je ne prenais pas le problème dans le bon sens.

Discussions similaires

  1. Réponses: 1
    Dernier message: 19/07/2012, 10h45
  2. Réponses: 2
    Dernier message: 16/07/2012, 13h30
  3. Guru of the Week 104
    Par gbdivers dans le forum C++
    Réponses: 15
    Dernier message: 25/04/2012, 15h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo