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()
Từ khóa explicit
cho các nhà xây dựng 1 đòi hỏi sự sáng tạo rõ ràng các đối tượng của loại char_separator. What does the explicit keyword mean in C++? bao gồm từ khóa rõ ràng rất tốt.
Từ khóa explicit
cho hàm tạo thứ 2 là tiếng ồn và bị bỏ qua.
EDIT
Từ C++ tiêu chuẩn:
7.1.2 p6 nói:
Từ khoá rõ ràng sẽ chỉ được sử dụng trong tờ khai của nhà xây dựng trong một khai báo lớp; xem 12.3.1.
12.3.1 p2 nói:
Một constructor rõ ràng cấu trúc vật thể giống như phi rõ ràng nhà thầu, nhưng làm như vậy chỉ nơi trực tiếp khởi tạo cú pháp (8,5) hoặc trong trường hợp phôi (5.2. 9, 5.4) được sử dụng một cách rõ ràng. Một hàm tạo mặc định có thể là một hàm tạo rõ ràng; một hàm tạo như vậy sẽ là được sử dụng để thực hiện khởi tạo mặc định hoặc khởi tạo giá trị (8.5). [Ví dụ:
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
-end dụ]
Vì vậy, các nhà xây dựng mặc định với từ khóa explicit
cũng giống như không có từ khóa này.
Nguồn
2011-07-21 11:50:59
Không phải là bản dupe; câu hỏi này là về một trường hợp góc rất cụ thể của từ khóa 'tường minh'. –
Đó không phải là chức năng, đó là hàm tạo - xem http://stackoverflow.com/questions/121162/what-does-the-explicit-keyword-in-c-mean/121163#121163 – Skizz
@larsmans Khó nói mà không thấy một số ví dụ thực tế –