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 :

Difference entre polymorphisme et surcharge


Sujet :

C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 39
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par d�faut Difference entre polymorphisme et surcharge
    J'ai un peu de mal � voir la difference entre une fonction polmymorphe et une fonction surcharg�e.

    Soit f une fonction qui additionne 2 nombres a et b.

    L'exemple est bidon mais c'est juste un exemple!

    Dans ce cas:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    int f(int a,int b){
    return a+b;
    }
     
    float f(float a,float b){
    return a+b;
    }
    on dit que f est surcharg�e;

    Et dans celui ci:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    template<typename T>
    T f(T a,T b){
    return a+b;
    }
    on dit que f est polymorphe?

    Est-ce cela ou je suis � c�t� de la plaque?

    Et ne peut on pas inverser les termes surcharg�e et polymorphe dans ces 2 exemples?

    Merci de m'�clairer!

  2. #2
    R�dacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 45
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Par d�faut Re: Difference entre polymorphisme et surcharge
    Citation Envoy� par seriousme
    Est-ce cela ou je suis � c�t� de la plaque?
    oui

    si personne n'intervient d'ici � ce que je sois sorti de table je t'�clairerais

  3. #3
    Membre �m�rite

    Homme Profil pro
    �tudiant
    Inscrit en
    Mars 2005
    Messages
    634
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Mars 2005
    Messages : 634
    Par d�faut
    A ce que j'ai entendu ce n'est pas forc�ment tout faux. Peut-�tre me trompe-je mais une fonction template peut aussi se dire "fonction polymorphe" dans le sens o� elle accepte plusieurs formes elle aussi.

    Mais c'est vrai qu'on parle plus volontiers de templates (ou patrons) dans ce cas l� et qu'on utilise souvent le mot "polymorphisme" pour parler des fonctions virtuelles et de l'h�ritage -> http://c.developpez.com/faq/cpp/?pag...NITION_virtual .

    Quelqu'un va peut-�tre me corriger ?

  4. #4
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 39
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par d�faut
    Donc pour les templates on ne parle ni de l'un ni de l'autre?

    C'est un troisieme cas qu'on ne peut absolument pas associer aux deux autres?

  5. #5
    Expert confirm�
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    D�cembre 2003
    Messages
    3 549
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (�le de France)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels

    Informations forums :
    Inscription : D�cembre 2003
    Messages : 3 549
    Par d�faut
    Le cas avec le template est du polymorphisme param�trique, le cas avec plusieurs d�finitions c'est du polymorphisme ad-hoc (aussi connu sous le nom de surcharge).

    Quand on parle de polymorphisme en C++ on fait g�n�ralement r�f�rence au polymorphisme d'h�ritage.

  6. #6
    R�dacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 45
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Par d�faut
    Citation Envoy� par Fiquet
    A ce que j'ai entendu ce n'est pas forc�ment tout faux. Peut-�tre me trompe-je mais une fonction template peut aussi se dire "fonction polymorphe" dans le sens o� elle accepte plusieurs formes elle aussi.

    Mais c'est vrai qu'on parle plus volontiers de templates (ou patrons) dans ce cas l� et qu'on utilise souvent le mot "polymorphisme" pour parler des fonctions virtuelles et de l'h�ritage -> http://c.developpez.com/faq/cpp/?pag...NITION_virtual .

    Quelqu'un va peut-�tre me corriger ?
    pareil

    le polymorphisme implique l'utilisation polymorphique d'une classe (par exemple un objet d'une classe B d�riv�e de A, utilis� au travers d'un pointeur A*). si une fonction virtuelle de A est red�finie dans B alors c'est la fonction de B qui est appel�e.

    la surchage d'une fonction dans le cas d'une classe B d�riv�e de A, c'est d'impl�menter dans B une fonction de m�me signature qu'une fonction non virtuelle de A. dans ce cas la fonction h�rit�e de A est masqu�e par celle de B. mais si on manipule un objet B au travers d'un pointeur A*, c'est la fonction de A qui sera appel�e.

  7. #7
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 39
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par d�faut
    Alors le polymorphisme ca n'est QUE dans le contexte des classes?

  8. #8
    R�dacteur/Mod�rateur
    Avatar de JolyLoic
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2004
    Messages
    5 463
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 51
    Localisation : France, Yvelines (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 5 463
    Par d�faut
    Souvent, quand on parle de polymorphisme en C++, on parle uniquement du type de polymorphisme des fonction virtuelles.

    Dans les domaines plus abstraits de l'informatique, on parle souvent de quatre types de polymorphisme.
    Deux o� on utilise une structuration commune aux diff�rents types en pr�sence (polymorphismes universel):
    - Polymorphisme d'inclusion, bas� sur de l'h�ritage
    - Polymorphisme param�tr�, la base des templates
    Deux o� le d�veloppeur sp�cifie manuellement le comportement pour chaque type (polymorphisme ad-hoc):
    - Surcharge de fonction
    - Coercion(cast des arguments)


    Lire par exemple http://research.microsoft.com/Users/luca/Papers/OnUnderstanding.A4.pdf
    Ma session aux Microsoft TechDays 2013 : D�velopper en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage � la d�couverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'h�sitez pas � me contacter.

  9. #9
    Membre �m�rite

    Homme Profil pro
    �tudiant
    Inscrit en
    Mars 2005
    Messages
    634
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Mars 2005
    Messages : 634
    Par d�faut
    Non justement pas forc�ment. Ca avait �t� discut� il y a pas longtemps fait une recherche sur le forum.

    [edit]Quelques explications plus pouss�es ici : http://www.developpez.net/forums/viewtopic.php?t=457190 [/edit]

  10. #10
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 39
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par d�faut
    La surcharge est un cas de polymorphisme donc?

    EDIT: Les templates aussi?

    Je ne pensais pas que le polymorphisme �tait une notion si "globale".

  11. #11
    Expert confirm�
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    D�cembre 2003
    Messages
    3 549
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (�le de France)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels

    Informations forums :
    Inscription : D�cembre 2003
    Messages : 3 549
    Par d�faut
    seriousme, tu n'as pas lu ce que j'ai �crit plus haut ?
    Parce que bon tu as pos� une question deux fois alors que je t'avais d�j� donn� la r�ponse.

  12. #12
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 39
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par d�faut
    Si justement!

    Le polymorphisme regroupe � la fois les templates(polymorphisme dit param�trique) et la surcharge(polymorphisme dit ad-hoc).

    C'est bien ce qu'il faut comprendre?

    Non?

    EDIT:si je pose plusieurs fois une question c'est que les avis semblent diverger.

    EDIT:j'essaie d'avoir des r�ponses cat�goriques.

  13. #13
    R�dacteur/Mod�rateur
    Avatar de JolyLoic
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2004
    Messages
    5 463
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 51
    Localisation : France, Yvelines (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 5 463
    Par d�faut
    Citation Envoy� par Fiquet
    Non justement pas forc�ment.
    Ton "non" fait-il r�f�rence � mon message ou � celui de seriousme ?

    Parce que si c'est le mien, je ne vois rien dans le thread cit� qui aille � l'encontre de mon message.

    HS : Ah, comme �a me manque la notion de thread hi�rarchis� comme dans les newsgroups. Ca romps parfois le rythme de lecture, mais c'est moins ambigu...
    Ma session aux Microsoft TechDays 2013 : D�velopper en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage � la d�couverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'h�sitez pas � me contacter.

  14. #14
    Membre �m�rite

    Homme Profil pro
    �tudiant
    Inscrit en
    Mars 2005
    Messages
    634
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Mars 2005
    Messages : 634
    Par d�faut
    Citation Envoy� par JolyLoic
    Ton "non" fait-il r�f�rence � mon message ou � celui de seriousme ?
    A celui de seriousme. Comme je l'ai dit avant, je suis aussi d'accord sur le fait que la mention "polymorphisme" en C++ est souvent utilis� dans le cas des fonctions virtuelles .

  15. #15
    Expert confirm�
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    D�cembre 2003
    Messages
    3 549
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (�le de France)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels

    Informations forums :
    Inscription : D�cembre 2003
    Messages : 3 549
    Par d�faut
    Le polymorphisme regroupe � la fois les templates(polymorphisme dit param�trique) et la surcharge(polymorphisme dit ad-hoc).
    Oui.
    Il y a aussi le polymorphisme d'inclusion (que j'ai appel� polymorphisme d'h�ritage - je suis pas s�r du terme) qui est celui auquel on pense en C++ quand on dit polymorphisme tout court.

    HS : Ah, comme �a me manque la notion de thread hi�rarchis� comme dans les newsgroups. Ca romps parfois le rythme de lecture, mais c'est moins ambigu...
    Comment �a "�a te manque" ? Tu n'as plus acc�s aux newsgroups ?

  16. #16
    R�dacteur/Mod�rateur
    Avatar de JolyLoic
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2004
    Messages
    5 463
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 51
    Localisation : France, Yvelines (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 5 463
    Par d�faut
    <HS>Si, mais il faut avouer que ce site rassemble plus de traffic que les newsgroups, et particuli�rement des d�butants, ce qui fait que je participe, m�me si en mon for int�rieur, par moment je regrette l'ergonomie des newsgroups</HS>
    Ma session aux Microsoft TechDays 2013 : D�velopper en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage � la d�couverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'h�sitez pas � me contacter.

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. POO : difference entre heritage et polymorphisme
    Par Melvine dans le forum Langages de programmation
    R�ponses: 13
    Dernier message: 13/07/2009, 19h14
  2. Différences entre Delphi et Visual Basic ?
    Par Anonymous dans le forum D�bats sur le d�veloppement - Le Best Of
    R�ponses: 75
    Dernier message: 30/03/2009, 20h09
  3. Difference entre fenetre et boite de dialog
    Par billyboy dans le forum Windows
    R�ponses: 2
    Dernier message: 02/06/2003, 15h43
  4. [] Difference entre MSHFlexGrid et MSFlexGrid
    Par olivierx dans le forum VB 6 et ant�rieur
    R�ponses: 6
    Dernier message: 23/04/2003, 08h48
  5. Difference entre types d'Adresse IP
    Par freud dans le forum D�veloppement
    R�ponses: 3
    Dernier message: 02/03/2003, 02h06

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