Từ khóa explicit trong C++ dùng để đánh dấu constructor không được chuyển đổi kiểu ngầm định (implicit conversion).
Ví dụ: lớp Foo có constructor Foo(int) và Foo(const char*).
class Foo {
public:
Foo(int n); // cấp phát n byte
Foo(const char *p); // khởi tạo từ chuỗi
};Nếu viết Foo mystring = 'x';, ký tự 'x' chuyển ngầm thành int và gọi Foo(int) - không phải ý định. Để ngăn chặn, khai báo constructor là explicit:
Ví dụ
class Foo {
public:
explicit Foo(int n); // cấp phát n byte
Foo(const char *p); // khởi tạo từ chuỗi p
};