Bonjour

Voici un petit programme qui ne se comporte pas comme je le voudrais (CodeBlocks 13.12 sur Windows 7)

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;
}
Tel quel, il fonctionne. Mais voici le message reçu si on décommente la ligne.
Nom : EMC.PNG
Affichages : 168
Taille : 24,0 Ko


J'ai deux questions :
  1. la ligne commentée n'est-elle pas équivalente à la première ?
  2. 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