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

Langage C++ Discussion :

Polymorphisme - Arguments d'une fonction


Sujet :

Langage C++

  1. #1
    Membre à l'essai
    Étudiant
    Inscrit en
    Juin 2008
    Messages
    32
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2008
    Messages : 32
    Points : 21
    Points
    21
    Par défaut Polymorphisme - Arguments d'une fonction
    Bonjour

    J'aurais une question concernant le polymorphisme et l'appel d'une fonction.

    Considérons une classe Shape et une sous-classe Circle et les deux fonctions surchargées suivantes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    void fonction(Shape* shape);
    void fonction(Circle* circle);
    Je voudrais savoir, en appelant la fonction ci-dessus avec comme argument un pointeur vers un objet dont le type à l'exécution est Circle, laquelle des deux versions de la fonction sera apellée ?

    Par exemple l'appel suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Circle* circle = new Circle();
    fonction(circle);
    En effet les deux versions pourraient etre apellées puisque qu'un objet de type Circle est aussi du type Shape.

    Merci d'avance de votre réponse.

  2. #2
    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
    Points : 13 017
    Points
    13 017
    Par défaut
    Salut,
    J'ai pas la norme sous la main pour te garantir à 100% ma réponse, mais je pense qu'il s'agit de la fonction dont le type statique correspond :
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    #include <iostream>
     
    class Shape
    {};
     
    class Circle : public Shape
    {};
     
    void dump(Shape*)
    {
    	std::cout<<"shape"<<std::endl;
    }
     
    void dump(Circle*)
    {
    	std::cout<<"circle"<<std::endl;
    }
    int main()
    {
    	Circle c;
    	Shape s;
    	dump(&c);
    	dump(&s);
    	Circle *pc = &c;
    	dump(pc);
    	Shape *ps = &s;
    	dump(ps);
    	ps = &c;
    	dump(ps);
       return 1;
    }
    produit comme sortie :
    circle
    shape
    circle
    shape
    shape

  3. #3
    Membre à l'essai
    Étudiant
    Inscrit en
    Juin 2008
    Messages
    32
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2008
    Messages : 32
    Points : 21
    Points
    21
    Par défaut
    Ok. Merci beaucoup pour votre réponse.

Discussions similaires

  1. [VBA-E] Lister les arguments d'une fonction
    Par laloune dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 26/02/2006, 12h04
  2. Récupération d'arguments sur une fonction
    Par p0Kep0K dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 21/09/2005, 09h17
  3. premier argument d'une fonction
    Par Ickou dans le forum Langage
    Réponses: 3
    Dernier message: 10/09/2005, 14h17
  4. une url comme argument d'une fonction
    Par khayyam90 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 18/10/2004, 20h15
  5. passer FILE* en argument d une fonction
    Par Monsieur_Manu dans le forum C
    Réponses: 9
    Dernier message: 10/04/2003, 17h56

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