Es wird verwendet, um Konstruktoren zu dekorieren; Ein so dekorierter Konstruktor kann vom Compiler nicht für implizite Konvertierungen verwendet werden.
C++ ermöglicht es einen Benutzer bereitgestellte Umwandlung, wo „vom Benutzer bereitgestellte“ bedeutet „mit Hilfe eines Klassenkonstruktors“, zum Beispiel in:
class circle {
circle(const int r) ;
}
circle c = 3 ; // implicit conversion using ctor
die Compiler hier den Kreis Ctor nennen , konstruieren Kreis c
mit einem Wert von 3 für r
.
explicit
wird verwendet, wenn Sie dies nicht möchten. Hinzufügen von expliziten Mittel, die Sie explizit Konstrukt haben würde:
class circle {
explicit circle(const int r) ;
}
// circle c = 3 ; implicit conversion not available now
circle c(3); // explicit and allowed
Mögliche doppelte: http://stackoverflow.com/questions/121162/what-does-the-explicit-keyword-in-c-mean –