Reading explanation of members:
explicit char_separator(const Char* dropped_delims,
const Char* kept_delims = "",
empty_token_policy empty_tokens = drop_empty_tokens)
explicit char_separator()
explicit
kluczowe dla 1 konstruktora wymaga wyraźnej tworzenie obiektów typu char_separator. What does the explicit keyword mean in C++? bardzo dobrze radzi sobie z jawnym słowem kluczowym.
Słowo kluczowe explicit
dla 2. konstruktora jest szumem i jest ignorowane.
EDIT
od C++ standard:
7.1.2 P6 mówi:
Wyraźna specifier stosuje się tylko w deklaracjach konstruktorów wewnątrz deklaracji klasy; patrz 12.3.1.
12.3.1 p2 mówi:
Wyraźne konstruktor tworzy obiekty, tak jak zakaz wyraźnych konstruktorów, ale czyni to jedynie w przypadku bezpośredniego inicjalizacji składni (8,5) lub gdzie odlewnictwa (5.2. 9, 5.4) są wyraźnie używane. Domyślny konstruktor może być jawnym konstruktorem; taki konstruktor będzie używany do wykonania domyślnej inicjalizacji lub inicjalizacji wartości (8.5). [przykład:
class Z {
public:
explicit Z();
explicit Z(int);
// ...
};
Z a; // OK: default-initialization performed
Z a1 = 1; // error: no implicit conversion
Z a3 = Z(1); // OK: direct initialization syntax used
Z a2(1); // OK: direct initialization syntax used
Z* p = new Z(1); // OK: direct initialization syntax used
Z a4 = (Z)1; // OK: explicit cast used
Z a5 = static_cast<Z>(1); // OK: explicit cast used
końcem przykład]
więc konstruktor domyślny z kluczowych explicit
jest taki sam jak bez tego hasła.
To nie jest dupe; to pytanie dotyczy bardzo konkretnego przypadku kluczowego słowa kluczowego "explicite". –
To nie jest funkcja, to jest konstruktor - zobacz http://stackoverflow.com/questions/121162/what-does-the-explicit-keyword-in-c-mean/121163#121163 – Skizz
@ larsmans Trudno powiedzieć bez oglądania jakiś prawdziwy przykład: –