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 :

[POO] Op�rateurs & H�ritage


Sujet :

C++

  1. #1
    Membre confirm�
    Profil pro
    �tudiant
    Inscrit en
    Juillet 2005
    Messages
    87
    D�tails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Juillet 2005
    Messages : 87
    Par d�faut [POO] Op�rateurs & H�ritage
    Bonjour,

    je m'amuse comme un petit fou en d�couvrant l'h�ritage. Rien � redire c'est g�nial, vive le cpp.
    Mais avant de coder avec mes pieds, je viens demander des conseils.

    Quand une classe B h�rite de A. On peut dire que B est un A avec g�n�ralement des variables membres suppl�mentaires.

    Comment gerer tout ceci dans le cadre des op�rateurs. J'aimerais que par exemple dans mes op�rateurs amis istream & ostream r�utiliser ceux de la classe m�re. J'ai essay� en utilisant une m�thode propre � chaque classe qui est virtuelle. Dans le cas de B je force l'appel � A avant de continuer ce qui est seulement necessaire � B.

    Dans A:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    virtual void affiche(ostream &s=cout);
    friend ostream& operator<<(ostream &s, A &a);
     
    void A::affiche(ostream &s)
    {
         s<<nom<<blabla<<blublu;
    }
    ostream& operator<<(ostream &s, A &a)
    {
        a.affiche(s);
        return s;
    }
    Dans B:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    void affiche(ostream &s=cout);
    void B::affiche(ostream &s=cout)
    {
         A::affiche(s);
         s<<endl<<MembreDeBSeulement;
    }
    Est-ce une bonne mani�re de faire ? Puis-je faire pareil pour l'op�rateur = et le constructeur de recopie ?

  2. #2
    Expert confirm�

    Inscrit en
    Novembre 2005
    Messages
    5 145
    D�tails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par d�faut
    1/ Une utilisation polymorphe des objets va g�n�ralement mal avec une s�mantique de valeur. Or les membres virtuels n'ont d'utilit� que dans le cadre d'une utilisation polymorphe, et les op�rateurs vont tr�s souvent de pair avec une s�mantique de valeur.

    2/ La technique d'appeler la version du membre de la classe de base dans l'impl�mentation d'un membre virtuel dans une classe d�riv�e est courante.

    3/ Dans une impl�mentation d'un constructeur (qu'il soit de copie ou non), il faut appeler un constructeur pour les classes de base.

    4/ Un op�rateur << stylistiquement correct a plus de gestion � faire que ce que tu n'en fais (au moins pour g�rer la largeur du champs).


    PS: suis-je le seul agac� par ce constructeur de recopie au re inutile?

  3. #3
    Membre confirm�
    Profil pro
    �tudiant
    Inscrit en
    Juillet 2005
    Messages
    87
    D�tails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Juillet 2005
    Messages : 87
    Par d�faut
    Tout d'abord, je suis enti�rement d'accord pour l'histoire du "re", mais je l'ai vu tellement de fois sur dvp que j'ai cru faire moins "martien" ..

    Sans vouloir paraitre impolit, je n'ai pas tout compris tout ce que tu � voulus me r�pondre.

    Si je comprends bien, je fait bien d'appeler la version membre et puis de faire ce que j'ai � faire. Pour moi j'ai l'impression que �a rend la programmation plus modulaire.
    Ce qui me chatouille: pour appeler la fonction "m�re" je suis oblig� de cr�er une vraie fonction que je peux "virtualiser"

    Que peut-on faire faire de plus � un op�rateur << ?

    Sinon dans ta premi�re r�ponse... euh comment dire... je suis pas du tout familier avec le vocabulaire objet ...

    Merci de m'avoir donn� une r�ponse aussi rapidement !

  4. #4
    Expert confirm�

    Inscrit en
    Novembre 2005
    Messages
    5 145
    D�tails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par d�faut
    Citation Envoy� par Haknaton Voir le message
    Ce qui me chatouille: pour appeler la fonction "m�re" je suis oblig� de cr�er une vraie fonction que je peux "virtualiser"

    Que peut-on faire faire de plus � un op�rateur << ?
    Fonctionner de mani�re sens�e si quelqu'un fait un setw() avant.

    Sinon dans ta premi�re r�ponse... euh comment dire... je suis pas du tout familier avec le vocabulaire objet ...
    Les membres virtuels et les op�rateurs vont rarement ensemble.

    Merci de m'avoir donn� une r�ponse aussi rapidement !
    Ca tient plus au hasard qu'� autre chose.

Discussions similaires

  1. Op�rateur et h�ritage
    Par Alfred12 dans le forum C++
    R�ponses: 6
    Dernier message: 17/01/2007, 16h57
  2. [D�butant] [POO] Probl�me d'h�ritage
    Par fire.stone dans le forum Langage
    R�ponses: 3
    Dernier message: 30/09/2006, 23h21
  3. [POO] virtual et h�ritage
    Par poukill dans le forum C++
    R�ponses: 4
    Dernier message: 27/07/2006, 15h27
  4. [POO] Constructeur et h�ritage
    Par LDDL dans le forum Langage
    R�ponses: 3
    Dernier message: 23/05/2006, 21h44
  5. [POO]Interdire l'h�ritage
    Par Coulon Arnaud dans le forum Langage
    R�ponses: 7
    Dernier message: 06/04/2005, 16h20

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