Le complément que je voulais ajouter en dire en fin de cours :
le C++ fait implicitement des conversions lorsque c'est possible ; par exemple avec le constructeur du cours
(Complexe(double a = 0.0, double b = 0.0);
on peut faire
Complexe z(3.0);
et donc « convertir » (« plonger » en fait) les double dans les Complexe.
Cela permet alors au compilateur de, SI NECESSAIRE, et lorsque c'est approprié, voir un double comme un Complexe.
Par exemple, écrire :
additionne(3.0, z2);
pour dire d'additionner le Complexe égal au réel 3.0 avec le Complexe z2, sans avoir a explicitement écrire additionne(Complexe(3.0), z2);
Si l'on veut empêcher de telles conversions implicites, il suffit d'ajouter le mot clé `explicit` devant le constructeur :
explicit Complexe(double a = 0.0, double b = 0.0);