Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Débutant] Questions sur l'héritage

Pas sûr d'avoir bien compris

    28 mars 2008 à 20:33:20

    Bonjour tout le monde,

    Je viens de terminer quelques tests sur l'héritage et malheureusement, ce que je pensais correct me semble incorrecte.

    L'héritage a bien pour but de taper des fonctions afin qu'elles puissent être utilisées par des objets d'autres classes qui ont en commun des objets qui utiliseront ces fonctions ? On les tape alors qu'une seule fois les fonctions.

    J'ai fais un test en créant une classe Personne.

    Une personne a comme caractéristiques (que ça soit un garçon ou une fille) un nom, un prénom et un âge.

    J'ai donc créé ma classe comme ceci dans un fichier .h :

    1. class CPersonne
    2. {
    3. public:
    4.         CPersonne();
    5.         CPersonne(const char* Nom,const char* Prenom,int Age);
    6.         ~CPersonne();
    7.         bool                    Nom(const char* UnNom);
    8.         bool                    Prenom(const char* UnPrenom);
    9.         bool                    Age(int UnAge);
    10. };


    J'ai ensuite créé une classe CGarcon en me disant que si je ne tape que ça... :


    1. class CGarcon : public CPersonne
    2. {
    3. };


    ...Je pourrais créer dans le main une variable de type CGarcon nommée par exemple Eric et qu'ensuite, je n'aurais qu'à taper :

    Eric. et là les fonctions auraient apparûes.

    Ce n'est pas le cas, y'a-t'il quelque chose que je n'ai pas compris ?

    Est-ce que ma logique est correcte au niveau de l'héritage ?

    Merci d'avance pour votre aide.

    beegees
    • Partager sur Facebook
    • Partager sur Twitter
      28 mars 2008 à 20:58:45

      L'héritage a deux buts plus ou moins orthogonaux:
      1- Définir des objets qui peuvent être utilisés en place d'autres objets (un chien à la place d'un animal, un stylo à la place d'un truc_pour_ecrire, ...)

      2- Importer du code

      1- entraine généralement 2-. Pas toujours le contraire.

      Ton exemple est dans le cas un. Et "eric.age(42);" devrait fonctionner -- même si c'est une fonction maladroite (rapidement traité dans la FAQ C++ de développez au chapitre sur les accesseurs)
      • Partager sur Facebook
      • Partager sur Twitter
      C++: Blog|FAQ C++ dvpz|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS| Bons livres sur le C++| PS: Je ne réponds pas aux questions techniques par MP.
        29 mars 2008 à 10:31:17

        Salut !

        Si tu tapes Eric. , l'auto-complétion du code devrait t'affciher les fonctions de la classe CPersonne (et donc de CGarçon) c'est ça que tu veux ? Sache que chez moi aussi c'est un peu aléatoire et qu'il faut sauvegarder les fichiers pour que ça marche ^^
        • Partager sur Facebook
        • Partager sur Twitter
          30 mars 2008 à 10:31:20

          A ce que je vois, il te manque un beau constructeur et un destructeur dans ta class garçon non ? ;)
          @+
          • Partager sur Facebook
          • Partager sur Twitter

          La maîtrise des fondamentaux est le fondamental de la Maîtrise.

          [Débutant] Questions sur l'héritage

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown