constructeurs explicit

constructeurs explicit

by Jean-Cédric Chappelier -
Number of replies: 0

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);