È utile per decorare i costruttori; un costruttore così decorato non può essere utilizzato dal compilatore per conversioni implicite.
C++ permette fino a una conversione fornito dall'utente, dove significa "forniti dall'utente", "per mezzo di un costruttore di classe", ad esempio, in:
class circle {
circle(const int r) ;
}
circle c = 3 ; // implicit conversion using ctor
il compilatore chiamerà cerchio ctor qui , constructinmg circle c
con un valore di 3 per r
.
explicit
viene utilizzato quando non si desidera questo. L'aggiunta di mezzi espliciti che dovreste esplicitamente costrutto:
class circle {
explicit circle(const int r) ;
}
// circle c = 3 ; implicit conversion not available now
circle c(3); // explicit and allowed
Eventuali duplicati: http://stackoverflow.com/questions/121162/what-does-the-explicit-keyword-in-c-mean –