У него нет недостатков.Это будет безопасно в будущем, потому что в C ++ 0x многопараметрические конструкторы участвуют в инициализации с использованием многоэлементных списков инициализаторов и могут быть запрещены для использования в случаях, когда применяются только неявные преобразования с использованием explicit
.
Так что, если вы обнаружите, что многопараметрический конструктор Give не логически представляет значение вашего класса, я думаю, что было бы хорошо сделать его explicit
(пример: я бы установил конструктор контейнера (size_t size, T defaultValue)
beexplicit
, в то время как конструктор pair
, (T first, U second)
устанавливается неявным).