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

Résolu/Fermé
devdev1 Messages postés 8 Date d'inscription mardi 15 décembre 2015 Statut Membre Dernière intervention 11 avril 2016 - 19 déc. 2015 à 21:09
devdev1 Messages postés 8 Date d'inscription mardi 15 décembre 2015 Statut Membre Dernière intervention 11 avril 2016 - 19 déc. 2015 à 22:07
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 :)
}
A voir également:

1 réponse

KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
19 déc. 2015 à 21:46
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
devdev1 Messages postés 8 Date d'inscription mardi 15 décembre 2015 Statut Membre Dernière intervention 11 avril 2016
19 déc. 2015 à 22:07
Mercii Beaucoup pour ton aide a chaque fois (y)
0