Se usa para decorar constructores; un constructor así decorado no puede ser utilizado por el compilador para conversiones implícitas.
C++ permite que hasta una conversión proporcionado por el usuario, donde los medios "proporcionados por el usuario", "por medio de un constructor de la clase", por ejemplo, en:
class circle {
circle(const int r) ;
}
circle c = 3 ; // implicit conversion using ctor
el compilador llamará al ctor círculo aquí , construyendo el círculo c
con un valor de 3 para r
.
explicit
se utiliza cuando no desea esto. La adición de medios explícitos que se tendrías que explícitamente construcción:
class circle {
explicit circle(const int r) ;
}
// circle c = 3 ; implicit conversion not available now
circle c(3); // explicit and allowed
Posible duplicado: http://stackoverflow.com/questions/121162/what-does-the-explicit-keyword-in-c-mean –