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 :

Question sur l'héritage (débutant en C++)


Sujet :

C++

  1. #1
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut Question sur l'héritage (débutant en C++)
    Bonjour tout le monde,

    J'ai une classe Rectangle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    class CRectangle : public CForme 
    Voici CForme :
    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
    19
    20
     
     
    class CForme
    {
    public:
    	CForme();
    	CForme(const CForme& Source);
    	CForme(const char* UnNom);
    	~CForme();
     
    	bool				EstValide() const;
     
    	const char*			Nom() const;
    	double				Surface() const;
     
    	bool				Nom(const char* UnNom);
     
    private:
    	CChaine				m_Nom;
    };
    - Est-ce que CRectangle hérite de toutes les méthodes de CForme ?
    - Même des private ?
    - N'importe où dans le code ?

    Comment appeler une méthode de CForme dans CRectangle ?

    Je vous remercie d'avance pour votre aide.

    beegees

  2. #2
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 612
    Points : 30 612
    Points
    30 612
    Par défaut
    Salut,

    La classe CRectangle permet d'accéder de manière publique à tout ce qui est public de CForme.

    En local (donc, au sein d'une méthode propre de CRectangle), tu peux accéder aux méthodes et aux membres publics et protegés de CForme.

    Par contre, tout ce qui est privé dans CForme n'est accessible que par les méthodes de CForme (quel que soit la visibilité de la méthode qui essaye d'y accéder).

    Ainsi, de manière général, avec une classe de base du genre de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    class Base
    {
        public:
           void methodePublique();
           int membrepublic;
        protected:
           void methodeProtegee();
           int membreprotege;
        private:
           void methodePrivee();
           int membreprive;
    };
    et une classe dérivée du genre de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    class Derivee : public Base
    {
        public:
            void methodeDeriveePublique();
             int membrederivePublic;
        protected:
             void MethodeDeriveeProtectee();
             int membrederiveprotege;
        private:
             void methodeDeriveePrivee();
             int membrederivepublic;
    };
    et une déclaration de variable du genre de
    tu pourras accéder directement à
    • obj.methodePublique()
    • obj.methodeDeriveePublique()
    • obj.membrepublic
    • obj.membrederivepublic

    Au sein des méthode de Derivee, tu peux accéder
    • à tous les membre et méthodes de la classe Derivee
    • à methodeProtegee() et
    • à membreprotege

    Mais seuls les méthodes
    • methodePublique
    • methodeProtegee et
    • methodePrivee

    pourront accéder à membreprive

    Maintenant, ce n'est valable que dans le cadre d'un héritage public.

    En effet, tu peux provoquer un héritage protege ou même privé, et, dans ce cas, la visibilité maximale des différents éléments de la classe de base ne sera que celle de l'héritage.

    Ainsi, avec une classe du genre de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    class Derivee2: protected Base
    {
       /*...*/
    };
    meme les méthodes et membres publics de Base deviendront protected (et donc accessible seulement depuis les méthodes de Derivee2)

    Pär contre, les membres et méthodes privés de Base resteront inaccessible depuis les méthodes de Derivee2

    Le principe étant le même dans le cadre d'un héritage privé

    Pour appeler une méthode de ta classe de base dans ta classe dérivée, deux situations peuvent exister:

    La méthode à appeler n'est pas redéfinie dans la classe dérivée.

    Il suffit alors de l'appeler de manière classique (en prenant en compte la visibilité: methodePrivee() ne serait donc pas accessible depuis les méthodes de Derivee )

    Le code peut donc être tout simplement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    void Derivee::methodeDeriveePublique()
    {
        methodePublique(); 
        /* ou */
        methodeProtegee();
    }
    Le deuxième cas est que la méthode est redéfinie dans la classe dérivée.

    Elle est alors déclarée comme méthode virtuelle au sein des deux classes.

    Pour appeler explicitement le comportement de la classe de base, il faut indiquer au compilateur que c'est ce que tu veux, en fournissant la portée réelle de la fonction:

    ainsi, avec un héritage de l'ordre de
    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
    19
    20
    21
    22
    class Base2
    {
        public:
            // une fonction dont le comportement varie en fonction du type réel
            virtual void methodeVirtuelle();
    };
    class Derivee3: public Base2
    {
        public:
            //pour pouvoir redéfinir le comportement, il faut redéclarer la méthode
            virtual void methodeVirtuelle();
            //et une autre méthode pour montrer le fonctionnement
            void laMethode();
    };
     
    void Derivee3::laMethode()
    {
        //ici, on appelle le comportement défini pour Derivee3
        methodeVirtuelle();
        //et ici, on appelle le comportement défini pour la classe de base
        Base2::methodeVirtuelle();
    }
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  3. #3
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Salut Koala,

    Woaw, quelle magnifique réposne Merci.

    Je relis ça à mon aise et je reviens très vite.

    Merci encore.

    beegees

  4. #4
    Membre régulier
    Avatar de mac&cheese
    Profil pro
    Étudiant
    Inscrit en
    Mars 2008
    Messages
    98
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2008
    Messages : 98
    Points : 96
    Points
    96
    Par défaut
    N'est-il pas possible de rentre les methodes privées accessibles avec les classes friend?
    World's greatest inventors: Franklin, Edison and this REESE guy.

  5. #5
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 612
    Points : 30 612
    Points
    30 612
    Par défaut
    si, de fait, je n'ai pas parlé de l'amitié...

    Voilà la preuve qu'il reste toujours difficile d'être exhaustif
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  6. #6
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Citation Envoyé par koala01 Voir le message
    si, de fait, je n'ai pas parlé de l'amitié...

    Voilà la preuve qu'il reste toujours difficile d'être exhaustif
    Bonjour Koala,

    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 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    class CPersonne
    {
    public:
    	CPersonne();
    	CPersonne(const char* Nom,const char* Prenom,int Age);
    	~CPersonne();
     
    	bool			Nom(const char* UnNom);
    	bool			Prenom(const char* UnPrenom);
    	bool			Age(int UnAge);
    };
    J'ai ensuite créé une classe CGarcon en me disant que si je ne tape que ça... :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    class CGarcon : public CPersonne
    {
    
    	
    };
    ...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

  7. #7
    Alp
    Alp est déconnecté
    Expert éminent sénior

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Points : 11 860
    Points
    11 860
    Par défaut
    Selon les éditeurs que tu utilises pour écrire ton code, il faut _sauvegarder_ le fichier où il y a ta classe CPersonne, parfois même il faut lui laisser le temps, donc aller faire un tour dans 2 ou 3 autres fichiers.

    Par contre, ça n'a rien à voir avec le C++ car ta syntaxe est correcte et tout, là c'est un problème avec l'éditeur que tu utilises.

  8. #8
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Citation Envoyé par Alp Voir le message
    Selon les éditeurs que tu utilises pour écrire ton code, il faut _sauvegarder_ le fichier où il y a ta classe CPersonne, parfois même il faut lui laisser le temps, donc aller faire un tour dans 2 ou 3 autres fichiers.

    Par contre, ça n'a rien à voir avec le C++ car ta syntaxe est correcte et tout, là c'est un problème avec l'éditeur que tu utilises.
    Et bien j'avais fermé et sauvgardé et j'ai réouvert, toujours rien.

    J'ai pourtant inclus le fichier header --> #include "test.h"

    Comprends pas.

    beegees

  9. #9
    Alp
    Alp est déconnecté
    Expert éminent sénior

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Points : 11 860
    Points
    11 860
    Par défaut
    Quel éditeur ?

  10. #10
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 612
    Points : 30 612
    Points
    30 612
    Par défaut
    Un petit conseil au passage: préfère les std::string (voire, pourquoi pas les std::w_string) aux char* qui peuvent poser une série de problèmes
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  11. #11
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Citation Envoyé par Alp Voir le message
    Quel éditeur ?
    Microsoft Visual Studio C++ 6.

    Je viens de trouver et si je vous avais mis l'entierté de mon code, vous auriez trouvé directement.

    Lors de la création de l'objet Eric, je mettais :

    Eric() ça serait plus tôt une classe ?

    Désolé et merci pour votre aide.

    Merci

    beegees

  12. #12
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Citation Envoyé par koala01 Voir le message
    Un petit conseil au passage: préfère les std::string (voire, pourquoi pas les std::w_string) aux char* qui peuvent poser une série de problèmes
    Bonjour Koala,

    Merci pour ton conseil.

    Je dois t'avouer que le prof nous enseigne le C++ de cette manière là (avec le const char*).

    Mais avec std::string, y'a t'il moyen de travailler avec les pointeurs ?

    Merci encore pour ton dévouement.

    beegees

  13. #13
    Rédacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supaéro - Doctorant ONERA
    Inscrit en
    Juin 2006
    Messages
    2 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing Supaéro - Doctorant ONERA

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 307
    Points : 4 732
    Points
    4 732
    Par défaut
    Citation Envoyé par beegees Voir le message
    Je dois t'avouer que le prof nous enseigne le C++ de cette manière là (avec le const char*).
    Bah change de prof.

    Citation Envoyé par beegees Voir le message
    Mais avec std::string, y'a t'il moyen de travailler avec les pointeurs ?
    je ne comprend pas ce que tu veux dire par là.Avec les std::string, tu bosse, c'est tout.
    "Never use brute force in fighting an exponential." (Andrei Alexandrescu)

    Mes articles dont Conseils divers sur le C++
    Une très bonne doc sur le C++ (en) Why linux is better (fr)

  14. #14
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Citation Envoyé par Davidbrcz Voir le message
    Bah change de prof.


    je ne comprend pas ce que tu veux dire par là.Avec les std::string, tu bosse, c'est tout.


    Bah il nous apprend la base, à nous d'améliorer après.

  15. #15
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Mars 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2008
    Messages : 8
    Points : 10
    Points
    10
    Par défaut
    La classe std::string est une classe simplifiant simplement l'utilisation des chaîne de caractères (tu ne peux nier que char* ou char[] est relativement peu pratique à utiliser, même pour les obscurantistes !).

    Donc travailler avec les poiteurs avec... oui et non. Rien ne t'empêche de faire un pointeur vers une string pour peu que tu en es besoin, ceci dit, contrairement a un char*, une string ne nécessite absolument pas de gestion de pointeur pour être utilisée (elle gère ça toute seule).

  16. #16
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    780
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 780
    Points : 1 176
    Points
    1 176
    Par défaut
    Citation Envoyé par beegees Voir le message
    Bah il nous apprend la base, à nous d'améliorer après.
    nope, malheureusement il vous apprend un mélange de C et de C++, ce qui ne va vous aider ni dans l'un ni dans l'autre. Surtout le jour où tu vas passer un entretien pour du C++ et le recruteur va bien rigoler en voyant que tu ne connais pas la librairie standard. ( oui c'est ce qui m'est arrivé en sortant de l'école )

    Il faut que tu en sois conscient.

    Et si le cours est plus une "initiation à un langage objet" qu'un cours approfondi de C++ ben.... autant utiliser la lib standard orienté objet ( avec la classe std::string ) et la notion de référence plutôt que d'utiliser des types de base style char et des pointeurs qui ne sont pas objets?

  17. #17
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    Citation Envoyé par beegees Voir le message
    Lors de la création de l'objet Eric, je mettais :
    Tu déclarais qu'Eric etait une fonction sans argument qui retourne un CGarcon. Exactement comme
    déclare que rand est une fonction sans argument qui retourne un int. Ca surprend dans les contextes où on a plutôt l'habitude de voir des définitions d'objets que des déclarations de fonction. Il y a des cas encore plus surprenant quand on met des arguments.
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

  18. #18
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Citation Envoyé par Mosphe Voir le message
    La classe std::string est une classe simplifiant simplement l'utilisation des chaîne de caractères (tu ne peux nier que char* ou char[] est relativement peu pratique à utiliser, même pour les obscurantistes !).

    Donc travailler avec les poiteurs avec... oui et non. Rien ne t'empêche de faire un pointeur vers une string pour peu que tu en es besoin, ceci dit, contrairement a un char*, une string ne nécessite absolument pas de gestion de pointeur pour être utilisée (elle les gères ça toute seule).
    Merci pour ta réponse.

    S'est vrai que ce String est intéressant mais si le prof ne s'y met pas, je devrai alors l'apprendre par moi même.

    Merci encore.

    beegees

  19. #19
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Citation Envoyé par nikko34 Voir le message
    nope, malheureusement il vous apprend un mélange de C et de C++, ce qui ne va vous aider ni dans l'un ni dans l'autre. Surtout le jour où tu vas passer un entretien pour du C++ et le recruteur va bien rigoler en voyant que tu ne connais pas la librairie standard. ( oui c'est ce qui m'est arrivé en sortant de l'école )

    Il faut que tu en sois conscient.

    Et si le cours est plus une "initiation à un langage objet" qu'un cours approfondi de C++ ben.... autant utiliser la lib standard orienté objet ( avec la classe std::string ) et la notion de référence plutôt que d'utiliser des types de base style char et des pointeurs qui ne sont pas objets?
    Crois moi que j'en suis concient.

    J'ai juste pas trop le choix car je suis en fin de 2e année.

    Je pense qu'il ne sera pas très difficile d'apprendre le C++ correct avec les bonnes base qu'il nous aura enseigné.

    bon Dimanche.

    beegees

  20. #20
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Citation Envoyé par Jean-Marc.Bourguet Voir le message
    Tu déclarais qu'Eric etait une fonction sans argument qui retourne un CGarcon. Exactement comme
    déclare que rand est une fonction sans argument qui retourne un int. Ca surprend dans les contextes où on a plutôt l'habitude de voir des définitions d'objets que des déclarations de fonction. Il y a des cas encore plus surprenant quand on met des arguments.
    Merci pour l'explication.

    C'est clair que je le saurai pour la prochaine fois.

    Merci encore.

    beegees

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. petite question sur l'héritage et les cast
    Par baedal dans le forum Langage
    Réponses: 3
    Dernier message: 29/02/2008, 00h48
  3. Questions sur l'héritage dans Matisse
    Par Cassios dans le forum NetBeans
    Réponses: 8
    Dernier message: 14/03/2007, 23h23
  4. Question sur X11 - Xlib - Débutant
    Par bsp_epoto dans le forum Linux
    Réponses: 1
    Dernier message: 26/07/2006, 18h02
  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