Je vous poste deux fonctions:
Dans le cas ou je ferai un appel telle que test(2.5,3) j'aimerai savoir laquelle des deux fonctions sera applée et aussi en savoir la raison??
Merci.
Ben....
Logiquement parce que la première fonction ne prend que des int mais tu passes un float. Le compilo fera donc appel à la seconde fonction qui prend des floats.
Soit plus rigoureux, tapes test(2.5f, 3.0f) et tu n'auras pas de doute.
Sinon pour ton pb, pourquoi ne le testes tu pas au lieu de poster sur un forum ?
Pour la réponse, j'imagine que le compilo va préférer promouvoir le type int en float plutot que de dégrader le floatant 2.5, donc la deuxième fonction sera probablement appelée.
Non ma question est justement dans le cas ou dans l'appel de fonction j'ai un float 2.5 et un int 3 ce qui fait
test(2.5f,3(int)) et donc pour savoir en faite pourquoi c'est la 2eme fonction qui va etre applée
je rappelle le code
float test(int i, int j)
Le compilateur différencie les deux fonctions par le nombre de paramètre dans ton cas la surcharge est identique dans le nombre, dans ce cas il passe au type de paramètre int pour la 1ere et float pour l'autre c'est comme ça qu'il fait la différence.
Lors de l'exécution c la 2eme qui va être exécutée ==> test(2.5,3.0)