1 pièce(s) jointe(s)
Surcharge du constructeur
Bonjour :coucou:
Voici un petit programme qui ne se comporte pas comme je le voudrais (CodeBlocks 13.12 sur Windows 7)
Code:
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.
Pièce jointe 151016
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