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 :

Heritage de constructeur


Sujet :

C++

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Janvier 2012
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2012
    Messages : 68
    Points : 27
    Points
    27
    Par défaut Heritage de constructeur
    Bonjour,

    J'ai une question dont la réponse n'est jamais très claire dans tout ce que j'ai pu lire.

    Quand j'appelle le constructeur valué ou par recopie d'une classe fille, elle hérite du constructeur par défaut de la classe maitre ?

    Je ne trouve absolument pas de réponse clair..

    Thank's !

  2. #2
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 012
    Points : 23 145
    Points
    23 145
    Par défaut
    Bonjour,

    Les constructeurs des classe filles n'héritent pas du constructeur de la classe mère mais l'appellent :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    class A
    {
             A(int){}
             A(void){}
    };
     
    class B : public A
    {
             B(int i) : A(i) //appel explicite du constructeur de la classe mère
             {
     
              }
     
               B(void) //appel implicite du constructeur de la classe mère avant la première accolade.
               {
     
                }
    }
    En gros, avant de construire un B, tu va construire le A qui sera "contenu" dans ta classe B.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Janvier 2012
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2012
    Messages : 68
    Points : 27
    Points
    27
    Par défaut
    Hummm d'accord..

    Mais quand il appelle implicitement un constructeur valué de la classe maitre, il prend quoi comme paramètre ?

  4. #4
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 012
    Points : 23 145
    Points
    23 145
    Par défaut
    Il appelle le constructeur par défaut.
    Si ce constructeur n'existe pas, le compilateur te retournera une erreur.

  5. #5
    Membre expérimenté
    Homme Profil pro
    Chercheur
    Inscrit en
    Mars 2010
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 218
    Points : 1 685
    Points
    1 685
    Par défaut
    Salut,

    à noter que dans la nouvelle norme, on peut spécifier que tous les constructeurs de la classe fille héritent des constructeurs respectifs de la classe mère à l'aide du mot-clé using.

  6. #6
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 012
    Points : 23 145
    Points
    23 145
    Par défaut
    Citation Envoyé par Aleph69 Voir le message
    Salut,

    à noter que dans la nouvelle norme, on peut spécifier que tous les constructeurs de la classe fille héritent des constructeurs respectifs de la classe mère à l'aide du mot-clé using.
    Je n'ai pour le moment rien trouvé à ce sujet, aurais-tu un lien expliquant ceci?

  7. #7
    Membre expérimenté
    Homme Profil pro
    Chercheur
    Inscrit en
    Mars 2010
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 218
    Points : 1 685
    Points
    1 685

  8. #8
    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
    Juste une petite remarque, la notion d'héritage concerne les objets, pas les fonctions (une fonction peut appeller une autre fonction, peut la surcharger ou la redéfinir)

  9. #9
    Membre expérimenté
    Homme Profil pro
    Chercheur
    Inscrit en
    Mars 2010
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 218
    Points : 1 685
    Points
    1 685
    Par défaut
    Salut gbdivers,

    tu as sûrement une bonne raison de préciser que

    Citation Envoyé par gbdivers Voir le message
    la notion d'héritage concerne les objets, pas les fonctions (une fonction peut appeller une autre fonction, peut la surcharger ou la redéfinir)
    mais je ne vois pas laquelle. La notion de fonction (membre bien sûr) héritée existe bien en C++. Elle semble d'ailleurs être utilisée dans la norme si j'en crois le dernier draft. Cela paraît assez naturel puisqu'une classe hérite essentiellement d'une autre classe ses données et fonctions membres. Pourquoi ne pourrait-on pas parler de constructeur hérité?

    EDIT : je viens de comprendre. J'ai fait un abus de langage en écrivant
    on peut spécifier que tous les constructeurs de la classe fille héritent des constructeurs respectifs de la classe mère à l'aide du mot-clé using
    La version correcte serait plutôt
    on peut spécifier que la classe fille hérite de tous les constructeurs de sa classe mère à l'aide du mot-clé using
    Merci pour la remarque, je ne m'en étais pas rendu compte en l'écrivant.

    EDIT1 : j'en profite pour mettre à +1 à Neckara. Je ne sais pas qui lui a mis un -1 mais il a la gâchette un peu trop facile à mon goût, ce n'était pas du tout mérité. L'objectif du forum est d'échanger et de s'entraider, pas de jouer la vierge effarouchée dès que quelqu'un ne sait pas quelque chose ou demande un complément d'information sur un point de langage qui, de surcroît, est très récent et même pas forcément supporté par tous les compilateurs.

  10. #10
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Janvier 2012
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2012
    Messages : 68
    Points : 27
    Points
    27
    Par défaut
    Salut,

    Tout cela confirme ce que je pensais.

    Thank's !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. heritage et constructeur
    Par dhoorens dans le forum C++
    Réponses: 6
    Dernier message: 05/10/2007, 14h38
  2. Heritage de constructeurs
    Par 0fragma0 dans le forum Langage
    Réponses: 3
    Dernier message: 02/10/2007, 12h24
  3. [POO] [PHP4.4.4] heritage et constructeur
    Par jeff_! dans le forum Langage
    Réponses: 3
    Dernier message: 07/12/2006, 15h02
  4. [C++]Heritage et constructeur de copie
    Par matazz dans le forum C++
    Réponses: 2
    Dernier message: 25/03/2005, 12h31
  5. [C++] Heritage - Probleme constructeur
    Par yanndublanche dans le forum Débuter
    Réponses: 2
    Dernier message: 04/08/2004, 10h17

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