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 :

incompréhension héritage privé


Sujet :

Langage C++

  1. #1
    Membre éclairé Avatar de janyoura
    Femme Profil pro
    étudiante ingénierie informatique
    Inscrit en
    Mars 2012
    Messages
    365
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : étudiante ingénierie informatique

    Informations forums :
    Inscription : Mars 2012
    Messages : 365
    Par défaut incompréhension héritage privé
    Salut
    J'aimerai bien que quelqu'un me corrige le 2eme question de petit exercice dans la pièce jointe; en fait je n'arrive pas à comprendre l'effet de l'héritage privé, comment fonctionne t-il? D'après le cours j'ai compris que l'utilisateur de la classe dérivé n'aura plus accés aux fonctions membres de la classe de base, cependant je ne suis pas arrivée à dégager les fautes dans le question 2.
    voilà ma résolution au question:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    cout << c1.aire() <<endl; // cependant ici on a accès à la fonction aire() de la classe de base alors que c'est interdit, non?
    R.changer_cote(32.0); //rectangle est une classe de base, elle peut utilisé les fonctions de sa dérivée privé?
    Merci pour l'aide
    Images attachées Images attachées  

  2. #2
    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
    Citation Envoyé par janyoura Voir le message
    je n'arrive pas à comprendre l'effet de l'héritage privé, comment fonctionne t-il? D'après le cours j'ai compris que l'utilisateur de la classe dérivé n'aura plus accès aux fonctions membres de la classe de base
    Tous les membres hérités deviennent privés.

    Citation Envoyé par janyoura Voir le message
    cependant je ne suis pas arrivée à dégager les fautes dans le question 2.
    En numérotant 0 la ligne contenant l'accolade ouvrante :

    - ligne 3 à 6 : les membres sont privés, et donc non accessibles
    - ligne 7 : la méthode aire() ne peut être appelée par un utilisateur de Carre, car la méthode est devenue privée
    - ligne 8 : R n'a pas de méthode changer_cote()
    - ligne 9 : la méthode perimetre() ne peut être appelée par un utilisateur de Carre, car la méthode est devenue privée

  3. #3
    Membre éclairé Avatar de janyoura
    Femme Profil pro
    étudiante ingénierie informatique
    Inscrit en
    Mars 2012
    Messages
    365
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : étudiante ingénierie informatique

    Informations forums :
    Inscription : Mars 2012
    Messages : 365
    Par défaut
    merci pour la réponse, mais si tout les membres hérités deviennent privés , quelle est l'utilité de ce type d'héritage?? qu'est ce que hérite cette classe dérivée en fin du compte, j'ai l'impression qu'elle n'hérite rien puisque les membres de sa classe de base sont privés.

  4. #4
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 292
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 292
    Par défaut
    Ce n'est pas dans la FAQ ?
    ...
    Si, http://cpp.developpez.com/faq/cpp/?p...eritage_portee
    Mais c'est vrai que la réponse est succincte.

    Il faut comprendre le LSP pour comprendre pourquoi/quand/comment l'héritage privé.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  5. #5
    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
    Citation Envoyé par janyoura Voir le message
    merci pour la réponse, mais si tout les membres hérités deviennent privés , quelle est l'utilité de ce type d'héritage??
    L'implémentation.
    L'héritage privé n'a donc pas grand chose à voir avec l'héritage public. Ce n'est pas seulement une question de niveau d'accès : ils sont conceptuellement utilisé pour des choses différentes. L'héritage privé s'assimile plutôt à de la composition.

    L'héritage privé peut être utile pour implémenter des interfaces via des méthodes virtuelles héritées qui n'ont pas vocation à être visibles par l'utilisateur de la classe.

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

Discussions similaires

  1. Héritage privé et polymorphisme
    Par Lawyer666 dans le forum Langage
    Réponses: 5
    Dernier message: 05/11/2010, 18h53
  2. héritage privé et virtuel
    Par Lawyer666 dans le forum C++
    Réponses: 7
    Dernier message: 24/07/2010, 01h34
  3. Héritage privé et opérateur de conversion
    Par Lavock dans le forum Langage
    Réponses: 7
    Dernier message: 21/06/2010, 19h25
  4. Template et héritage privé.
    Par 3DArchi dans le forum Langage
    Réponses: 6
    Dernier message: 18/09/2009, 09h36
  5. [héritage privé] appel du constructeur de base
    Par PINGOUIN_GEANT dans le forum C++
    Réponses: 4
    Dernier message: 19/10/2004, 14h05

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