C++では、引数の型が異なる場合に、対応するコンストラクタがあれば暗黙のうちに型変換のために呼び出されることがあるが、explicitなコンストラクタは明示的にコードに書かない限り呼び出されない。
例えば、
class clsTest {
public:
explicit clsTest(int arg);
};
とした時、
int main()
{
clsTest test(123);
test = 456; // ←エラー
test = clsTest(456); // ←OK
return EXIT_SUCCESS;
}
のようになる。
暗黙の型変換は行なわれず、明示的にコンストラクタを呼び出す必要がある。