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 :

Comment puis je répondre a ce genre de questions ?


Sujet :

C++

  1. #1
    Membre du Club
    Homme Profil pro
    12
    Inscrit en
    Mai 2014
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : 12
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 67
    Points : 61
    Points
    61
    Par défaut Comment puis je répondre a ce genre de questions ?
    bonsoir!

    je cherche des cours sur la surcharge des fonctions, et du coup je suis tombé par hasard sur cet exercice .

    pouvez vous me donner des indications qui me permettent de savoir les fonctions qui représentent une surcharge de la fonction A ?

    1) Mais elle est ou A !!?

    2)dans la surcharge des fonctions: On s'interesse plus aux types de retour,mais seulement aux types et nombre d'arguments! mais dans cet exercice toutes les fonctions ont le meme type et le meme nombre d'arguments !!


    La programmation C était très gentille
    Images attachées Images attachées  

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 764
    Points : 2 705
    Points
    2 705
    Par défaut
    Je ne sais pas où tu as trouvé ce truc, mais au vu des fautes d'orthographe que comporte la question, tu ferais mieux de trouver une autre source...

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

    Informations professionnelles :
    Activité : aucun

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

    En fait, il est tout à fait vrai de dire que l'on s'intéresse au type des arguments, mais il faut aussi comprendre ce que l'on appelle le type de l'argument.

    En gros, tout ce qui peut modifier la manière dont le paramètre réagira dans la fonction doit être considéré comme faisant partie du type du paramètre. Pour faire simple, nous pourrions dire que tout ce qui se trouve avant le nom du paramètre fait partie du type, mais il ne faut pas oublier les éventuels [] qui modifient également la manière dont le paramètre va réagir.

    En plus, pour les crochets, il y a une différence entre la manière dont va réagir le paramètre s'il y a une valeur indiquée dedans et celle dont il va réagir s'il ne contient pas de valeur

    Ainsi, si tu donnes la taille dans un opérateur crochet, la taille indiquée fait partie du type complet du paramètre, ce qui fait que int x[3]représente un type différent de int x[4] parce que le premier représente un tableau (de taille fixe) de 3 entiers alors que le deuxième représente un tableau (de taille fixe) de 4 entiers.

    Par contre, lorsque la taille du tableau n'est pas indiquée, l'opérateur [] agit comme l'opérateur * dans la déclaration : il indique qu'il s'agit de l'adresse mémoire à laquelle on trouvera le premier élément du tableau (ou, du moins, ou on devrait trouver le premier élément du tableau).

    On va donc essayer de voir quels sont les types de x et de y pour les différents cas, ce qui nous permettra de déterminer quels cas sont des surcharges possible.
    • a) le premier paramètre de type float &[], le deuxième de type float &
    • b) le premier paramètre de type float , le deuxième de type float &
    • c) le premier paramètre de type float * , le deuxième de type float *
    • d) le premier paramètre de type float[] , le deuxième de type float &
    • e) le premier paramètre de type float[] , le deuxième de type float

    Comme tu peux le voir, il y a au moins un type qui diffère des autres prototypes de fonction pour chaque cas... C'est tout ce qu'il faut pour estimer que ces différents cas correspondent à autant de surcharges valides
    La seule chose est que pour a), le premier paramètre est de type "tableau de référence sur un int", et que ca, c'est pas possible (et donc refusé par le compilateur)...
    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

  4. #4
    Membre du Club
    Homme Profil pro
    12
    Inscrit en
    Mai 2014
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : 12
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 67
    Points : 61
    Points
    61
    Par défaut
    Merci beaucoup koala01!
    une dernière question svp pour les (const) qui pourraient exister à coté des paramaétres, devrai-je les apprendre en considération ?
    et j'ai pas compris ce que vous voulez dire par (le premier paramètre est de type "tableau de référence sur un int") ?
    je pense que tu veux dire que le type de retour ne peut pas être int ?
    je crois que votre réponse à un lien avec la deuxième partie de l'exercice ...

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

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut
    Citation Envoyé par DLOYAS Voir le message
    Merci beaucoup koala01!
    une dernière question svp pour les (const) qui pourraient exister à coté des paramaétres, devrai-je les apprendre en considération ?
    Oui, bien sur!!! ca rentre dans la définition de"ce que l'on trouve avant le nom du paramètre"
    et j'ai pas compris ce que vous voulez dire par (le premier paramètre est de type "tableau de référence sur un int") ?
    Généralement, pour comprendre pleinement à quoi correspond une variable (ou ici, un paramètre), tu peux lire les différentes informations qui apparaissent de droite à gauche, ca aide vraiment beaucoup.

    Ainsi, lorsque tu as un code qui ressemble à float & Y[], tu devrais le comprendre sous la forme de
    Y est un tableau (c'est représenté par les[]) de références sur des valeur(c'est l'esperluette) de type float (le premier mot)
    Le problème, c'est qu'une référence n'a aucune existance "phisique" en soi, pas plus qu'un pseudonyme sur le forum n'a une existence physique : Si je ("koala01") poste cette réponse, c'est parce que je (philippe dunski) écris ce message et que je (philippe dunski) "suis assimilé à" koala01.

    Si je dois me retrouver dans un groupe quelconque (un club d'échecs, de motards ou de sport), ce sera moi (philippe dunski) qui m'inscrirai dans ce club et non moi (koala01). Le principe est exactement le même en C++
    je pense que tu veux que le type de retour ne peut pas être int ?
    Non, cela n'a rien à voir avec le type de retour, cela a juste à voir avec le fait qu'il est impossible de créer un tableau de référence sur des données.

    Tu peux créer un tableau de données (float tab[]) ou un tableau de pointeurs sur des données ( float * Y[]), mais pas un tableau de références (d'alias de) sur des données ( float & Z[])
    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 du Club
    Homme Profil pro
    12
    Inscrit en
    Mai 2014
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : 12
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 67
    Points : 61
    Points
    61
    Par défaut
    Merci M.philippe c'est gentil de votre part .

  7. #7
    Membre émérite
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 764
    Points : 2 705
    Points
    2 705
    Par défaut
    Citation Envoyé par DLOYAS Voir le message
    une dernière question svp pour les (const) qui pourraient exister à coté des paramaétres, devrai-je les apprendre en considération ?
    Seulement pour les paramètres passés par copie/référence.

  8. #8
    Membre du Club
    Homme Profil pro
    12
    Inscrit en
    Mai 2014
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : 12
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 67
    Points : 61
    Points
    61
    Par défaut
    oodini :par copie ? mais pourqoui cette fonction n'est pas surdéfinie :
    void function1(char);
    void function1(char const);// pas de surdéfinition .

    Et pour les paramètres passés comme des pointeurs .
    void function2(char *);
    void function2(char const *);
    celle ci est une redéfinnition,n'est ce pas ?


    void function3(char *);
    void function3(char * const); // pas de surdéfinition .

  9. #9
    Membre expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2011
    Messages
    739
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Juin 2011
    Messages : 739
    Points : 3 627
    Points
    3 627
    Par défaut
    Dans un prototype de fonction, un type par copie ou par copie constante est la même chose pour le compilateur. Donc char ou const char pareil. char * ou char * const aussi.

Discussions similaires

  1. Réponses: 2
    Dernier message: 20/05/2007, 11h39
  2. Réponses: 2
    Dernier message: 03/07/2006, 20h14
  3. comment puis-je créer un BDD en fichier texte
    Par slyder dans le forum Bases de données
    Réponses: 2
    Dernier message: 19/01/2005, 10h05
  4. Comment puis je faire cette effet...
    Par wikers dans le forum OpenGL
    Réponses: 5
    Dernier message: 12/06/2004, 20h40
  5. comment puis-je recupérer l'extesion du fichier?
    Par mirella dans le forum Langage
    Réponses: 7
    Dernier message: 14/08/2002, 15h56

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