Bonjour
Voici un petit programme qui ne se comporte pas comme je le voudrais (CodeBlocks 13.12 sur Windows 7)
Tel quel, il fonctionne. Mais voici le message reçu si on décommente la ligne.
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 #include <iostream> #include <string> using namespace std; class EMC { unsigned bof ; public: EMC(string s = "0"){cout<<endl<<"s = "<<s ;} ; EMC(unsigned n = 0){cout<<endl<<" n = "<<n ;} ; EMC(unsigned long long n = 0){cout<<endl<<" n = "<<n ;} ; ~EMC(){ ;} ; }; int main() { EMC u("ok"); // EMC v = "pas ok" ; EMC w = (string)"ok" ; return 0; }
J'ai deux questions :
- la ligne commentée n'est-elle pas équivalente à la première ?
- pour lever l'ambiguïté pourquoi, sur les 3 constructeurs présents, le compilateur n'envisage-t-il pas le seul qui fonctionne ? La troisième ligne semble montrer qu'il le trouve si on l'aide un peu ...
Merci d'avance
Partager