dans Programmation

Le mot-clef explicit en C++

J’ai eu l’occasion d’aider quelqu’un récemment sur Zeste de Savoir. Cette personne demandait des explications sur le mot-clef du titre. Je pense donc qu’un petit article dessus peut servir. Ce mot-clef sert dans deux cas.

  • Le(s) constructeur(s) d’une classe.
  • La surcharge de l’opérateur de conversion.

Il s’agit dans tous les cas de dire au compilateur de ne PAS faire de conversion implicite lors de l’appel d’une fonction. Voici un exemple typique tiré (et légèrement adapté) de StackOverflow.

Ici, le compilateur va implicitement convertir notre int en Foo(int) et tout va bien se passer. Dans le cas où l’on rajoute explicit devant le constructeur, ça ne marche plus et l’on est obligé d’écrire le code suivant.

Le principe est sensiblement le même avec l’opérateur de conversion. Et comme un exemple (voire plusieurs) est plus parlant que des mots.

Ces exemples sont tirés respectivement de StackOverflow et du site de Bjarne Stroustrup. Et si tu regarde la bibliothèque standard, tu verras que ce mot-clef est souvent utilisé. Il permet de se prémunir des pièges que peuvent poser les conversions implicites, héritées du C.

Laisser un commentaire