The explicit specifier (C++ only)
The
explicit function specifier controls unwanted
implicit type conversions. It can only be used in declarations of
constructors within a class declaration. For example, except for the
default constructor, the constructors in the following class are converting
constructors. class A
{ public:
A();
A(int);
A(const char*, int = 0);
};The following declarations are legal.
A c = 1;
A d = "Venditti";The first declaration is equivalent to A
c = A(1).If you declare the constructor of the class with the explicit keyword,
the previous declarations would be illegal.
For example, if you declare the class as:
class A
{ public:
explicit A();
explicit A(int);
explicit A(const char*, int = 0);
};You can only assign values that match the values of the class type.
For example, the following statements will be legal:
A a1;
A a2 = A(1);
A a3(1);
A a4 = A("Venditti");
A* p = new A(1);
A a5 = (A)1;
A a6 = static_cast<A>(1);Related information