閱讀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
關鍵字的第一個構造函數需要明確的創作char_separator類型的對象。 What does the explicit keyword mean in C++?很好地涵蓋了顯式關鍵字。
第二個構造函數的explicit
關鍵字是一個噪音,並且被忽略。
EDIT
從C++標準:
7.1.2 P6告訴:
的顯式說明符,應僅在一個類聲明中 構造聲明中使用;見12.3.1。
12.3.1 P2講述:
一個明確的構造函數構造對象一樣,不明確的 構造函數,但這樣只有在直接初始化語法 (8.5)或在鑄件(5.2一樣。 9,5.4)被明確使用。默認的構造函數可能是一個顯式的構造函數;這樣的構造函數將是 用於執行默認初始化或值初始化(8.5)。 [實施例:
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
末端示例]
所以,用explicit
關鍵字默認構造是一樣的沒有這個關鍵字。
不是一個笨蛋;這個問題是關於'explicit'關鍵字的一個非常特殊的情況。 –
這不是一個函數,這是一個構造函數 - 請參閱http://stackoverflow.com/questions/121162/what-does-the-explicit-keyword-in-c-mean/121163#121163 – Skizz
@larsmans很難說,沒有看到一些真實的例子 –