Les conversions des types dans l'appel des fonctions en c++

Résolu
devdev1 Messages postés 10 Statut Membre -  
devdev1 Messages postés 10 Statut Membre -
Bonjour,
je suis débutant en c++ , je connais les types primitfs :short char int float double ..
mais j'ai un probléme au niveau d'appel des fontions surdéfinis, je ne sais pas quel fonction sera utilisé , j'ai cherché sur internet mais j'ai pas bien compris ce que ce passe au nivaux de la compilation de mon code là:

#include<iostream>
using namespace std;

void clone(double d){cout <<"\nLa fonction II = "; }
void clone(int n){cout << "\nLa fonction I = "; }

main(){
clone(2);
// ici la fonction va vaire appel à clone(int) , alors que le nombre 2 on peut le considére comme int , float ,double ....
// quand je mis clone(2.5) il me donne une erreur , que y'a d'ambiguité , entre clone(int) et clone(double) , pourquoi on a pas eu cette erreur avec l'appel clone(2) ?? ou bien sur quel niveau on se base là?? Merci d'avaaaaaaance :)
}

1 réponse

  1. KX Messages postés 19031 Statut Modérateur 3 020
     
    Bonjour,

    Quand tu écris une valeur en dure dans le code, celle-ci a un type comme toutes les autres valeurs. C'est ce type qui est utilisé pour choisir la bonne méthode. Voici quelques écritures différentes de nombres :

    #include<iostream>
    
    using namespace std; 
    
    void test(int n) {
        cout << "int " << n << endl;
    }
    void test(long n) {
        cout << "long " << n << endl;
    }
    void test(float n) {
        cout << "float " << n << endl;
    }
    void test(double n) {
        cout << "double " << n << endl;
    }
    
    int main(){ 
        test(1); // int 1
        test(2L); // long 2
        test(3.0); // double 3
        test(4e0); // double 4
        test(5.0f); // float 5
        test(6.0d); // double 6
        test(00010); // int 8
        test(0x010); // int 16
    }
    0
    1. devdev1 Messages postés 10 Statut Membre
       
      Mercii Beaucoup pour ton aide a chaque fois (y)
      0