Описание тега explicit-constructor

В C++ добавление префикса явного ключевого слова к конструктору не позволяет компилятору использовать этот конструктор для неявных преобразований.

В C++ компилятору разрешено выполнить одно неявное преобразование для преобразования параметров в функцию. Это означает, что компилятор может использовать конструкторы с одним параметром для преобразования из одного типа в другой, чтобы получить правильный тип для параметра.

Приставка к explicit ключевое слово конструктора предотвращает использование компилятором этого конструктора для неявных преобразований.

Причина, по которой вы можете захотеть это сделать, - избежать случайной конструкции, которая может скрыть ошибку.

Ссылки: