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

Langage C++ Discussion :

Question sur l'héritage en diamant


Sujet :

Langage C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 199
    Par défaut Question sur l'héritage en diamant
    Bonjour,

    Je suis amené à mettre en place un héritage en diamant, j'ai donc quelques questions.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    class Mere;
    class Intermediaire1 : virtual public Mere;
    class Intermediaire2 : public Intermediaire1;
    class Intermediaire3 : virtual public Mere;
    class Fille : public Intermediaire2, Intermediaire3;
    Confirmez vous que cela va bien générer un héritage en diamant?

    Merci d'avance.

  2. #2
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 766
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 766
    Par défaut
    Une question que j'avais eu en entretien...

    Que se passe-t-il si uns seule des classes Intermediaire1 et Intermediaire3 hérite virtuellement de Mere ?

  4. #4
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Citation Envoyé par oodini Voir le message
    Une question que j'avais eu en entretien...

    Que se passe-t-il si uns seule des classes Intermediaire1 et Intermediaire3 hérite virtuellement de Mere ?
    Regardes le dernier schéma de la F.A.Q

    Ca n'est plus un héritage en diamant mais l'ordre d'appel des constructeurs peut surprendre car sont d'abord appelés ceux des classes héritées virtuellement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    class A {} ;
    class B : public A {};
    class C : virtual public A {};
    class D : public B, public C {};
    Ordre d'appel des constructeurs :
    (1) A (D::C::A)
    (2) A (D::B::A)
    (3) B
    (4) C
    (5) D

    Alors que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    class A {} ;
    class B : public A {};
    class C : public A {};
    class D : public B, public C {};
    Ordre d'appel des constructeurs :
    (1) A (D::B::A)
    (2) B
    (3) A (D::C::A)
    (4) C
    (5) D

    Cf F.A.Q. Dans quel ordre sont construits les différents composants d'une classe ?

Discussions similaires

  1. Questions sur l'héritage multiple
    Par beegees dans le forum C++
    Réponses: 12
    Dernier message: 31/03/2008, 17h01
  2. Question sur l'héritage (débutant en C++)
    Par beegees dans le forum C++
    Réponses: 19
    Dernier message: 30/03/2008, 14h45
  3. petite question sur l'héritage et les cast
    Par baedal dans le forum Langage
    Réponses: 3
    Dernier message: 29/02/2008, 00h48
  4. Questions sur l'héritage dans Matisse
    Par Cassios dans le forum NetBeans
    Réponses: 8
    Dernier message: 14/03/2007, 23h23
  5. Question sur l'héritage
    Par the big ben 5 dans le forum Delphi
    Réponses: 28
    Dernier message: 06/06/2006, 17h27

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