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 :

Les fonctions virtuelles en C++ [Tutoriel]


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut Les fonctions virtuelles en C++
    Bonjour,
    Je vous propose un article sur les fonctions virtuelles en C++.
    En voici le synopsis :
    Les fonctions virtuelles sont un des piliers de la programmation orientée objet. En favorisant l'abstraction, elles permettent la construction d'architectures logicielles stables et évolutives. Cet article se propose d'explorer les fonctions virtuelles dans le langage C++ en abordant aussi bien les problèmes syntaxiques que les conséquences sémantiques de leur utilisation.
    Vous pouvez consulter l'article en version une seule page ou plusieurs pages.
    N'hésitez pas à apporter remarques, conseils, critiques...

  2. #2
    Membre Expert
    Avatar de white_tentacle
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    1 505
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 505
    Par défaut
    Cet article est tout simplement excellent !

    Tout est expliqué clairement, avec des exemples.

    A conseiller aux débutants ainsi qu'à tous ceux qui, comme moi, ont besoin d'une piqûre de rappel de temps en temps.

    En tout cas, merci pour l'article !

  3. #3
    Membre éclairé Avatar de thoratou
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    57
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 57
    Par défaut
    Tout a fait d'accord avec white_tentacle, c'est tout simplement excellent.

    Par contre pourquoi appelles-tu ca "fonction" et non pas "methode" ?

  4. #4
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Salut,
    Citation Envoyé par white_tentacle Voir le message
    Cet article est tout simplement excellent !
    Citation Envoyé par thoratou Voir le message
    Tout a fait d'accord avec white_tentacle, c'est tout simplement excellent.



    Citation Envoyé par thoratou Voir le message
    Par contre pourquoi appelles-tu ca "fonction" et non pas "methode" ?
    Je ne suis pas sûr que tout le monde s'accorde sur la définition de méthode. On le trouve parfois employé pour désigner les fonctions membres d'une classe (virtuelles ou non). Il me semble que Stroustrup n'emploie le mot méthode que pour les fonctions virtuelles[*], c'est à dire dont la résolution de l'appel est lié à un type dynamique (et dont je crois qu'il avait proposé à un moment qu'elles soient en dehors des classes). Il m'a semblé plus compréhensible de s'en tenir au mot 'fonction'.

    [EDIT][*] Dans cet article : multimethods.
    “Method” is a common term for a function chosen through runtime polymorphic dispatch.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2006
    Messages : 58
    Par défaut
    Les classes dérivées devraient utiliser le mot-clé virtual pour les fonctions définies comme virtuelles dans la classe de base.
    On ne le dit jamais assez. Et là c'est bien de le souligner.

  6. #6
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 287
    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 287
    Par défaut
    Dans la bible, on trouve un glossaire où il définit/rappelle que méthode est un autre terme pour fonction virtuelle chez beaucoup.
    D'où que mieux vaut l'éviter et s'en tenir au vocabulaire officiel pour être précis.
    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...

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 537
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 537
    Par défaut
    J'ai envie de dire que c'est un peu massif.

    Tu devrais rajouter quelques points résumées à la fin des parties, ce serait plus digeste je penses.

    Mais sinon, très bon article. Peut-être devrais-tu ajouter une partie sur la façon dont cela est implémenté en pratique, comment sont géré résolus les appels à l'exécution, comment est géré l'héritage multiple, etc . . .

    Enfin, c'est des voies à explorer pour améliorer l'article, mais il est déjà de bonne qualité.

  8. #8
    Membre chevronné Avatar de themadmax
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    446
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 446
    Par défaut
    Très bon article, juste une remarque pourquoi utilisé le mot 'struct' pour déclaré tes classes? Je pense que cela peut être déroutant pour un débutant (surtout si il vient du monde java/C#)

  9. #9
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Salut,
    Citation Envoyé par themadmax Voir le message
    Très bon article, juste une remarque pourquoi utilisé le mot 'struct' pour déclaré tes classes? Je pense que cela peut être déroutant pour un débutant (surtout si il vient du monde java/C#)
    Par fainéantise est certainement une mauvaise raison mais la bonne . En C++, struct et class sont équivalent si ce n'est les visiblités par défauts (publiques dans un cas, privées dans l'autre). Cela permet de faire des codes exemples plus concis. Remarque que la première note de bas de page fait le point là-dessus :
    Dans cet article, les termes classes et structures sont employés indifféremment. En effet, la seule différence en ce qui nous concerne entre class et struct est la visibilité par défaut : publique pour les membres et l'héritage pour les types définis avec struct et privée pour les membres et l'héritage pour les types définis avec class. Pour tous ce que nous allons dire par la suite, la chose est strictement identique que le type soit struct ou class. Cf. F.A.Q. : faq Quelle est la différence entre class et struct ?
    Disons que comme ça, ils sont directement plongés dans le bain du C++

  10. #10
    Membre Expert
    Avatar de Goten
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 580
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 580
    Par défaut
    J'ai une préférence pour struct pour ce genre de petit snaptest .

Discussions similaires

  1. Question sur les fonctions virtuelles
    Par beegees dans le forum C++
    Réponses: 9
    Dernier message: 13/04/2008, 19h54
  2. Bug sur les fonctions virtuelles
    Par Anthony.Desvernois dans le forum C++
    Réponses: 4
    Dernier message: 28/01/2008, 17h30
  3. Réponses: 2
    Dernier message: 07/10/2004, 17h00

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