Описание тега explicit-constructor
В C++ добавление префикса явного ключевого слова к конструктору не позволяет компилятору использовать этот конструктор для неявных преобразований.
В C++ компилятору разрешено выполнить одно неявное преобразование для преобразования параметров в функцию. Это означает, что компилятор может использовать конструкторы с одним параметром для преобразования из одного типа в другой, чтобы получить правильный тип для параметра.
Приставка к explicit
ключевое слово конструктора предотвращает использование компилятором этого конструктора для неявных преобразований.
Причина, по которой вы можете захотеть это сделать, - избежать случайной конструкции, которая может скрыть ошибку.
Ссылки: