Il est utilisé pour décorer les constructeurs; un constructeur ainsi décoré ne peut pas être utilisé par le compilateur pour des conversions implicites.
C++ permet jusqu'à une conversion fournie par l'utilisateur, où « fourni par l'utilisateur » moyen «au moyen d'un constructeur de classe », par exemple dans:
class circle {
circle(const int r) ;
}
circle c = 3 ; // implicit conversion using ctor
le compilateur appellera ici le cercle cteur , constructinmg cercle c
avec une valeur de 3 pour r
.
explicit
est utilisé lorsque vous ne le souhaitez pas. Ajout des moyens explicites que vous auriez à explicitement construction:
class circle {
explicit circle(const int r) ;
}
// circle c = 3 ; implicit conversion not available now
circle c(3); // explicit and allowed
double possible: http://stackoverflow.com/questions/121162/what-does-the-explicit-keyword-in-c-mean –