Когда я использовал (недавно выпущенный) Cppcheck 1.69 в моем коде1, он показал много сообщений, где я не ожидал ни одного 😉 Отключение noExplicitConstructor
Доказано, что все они были именно такого рода.
Но я обнаружил, что я не единственный, у которого много новых сообщений Cppcheck, посмотрите на результаты анализа LibreOffice (который я могу показать публично):
Что бы сделал опытный программист:
explicit
ключевое слово?1 Редактировать: Это конечно не мой код но код, над которым я должен работать, это устаревший код: смесь C и C ++ в нескольких (до) стандартных вариантах, и это довольно большая база кода.
В прошлом я был укушен скачками производительности, вызванными неявными преобразованиями, а также явными ошибками. Поэтому я склонен всегда использовать explicit
за все конструкторы, которые я не хочу участвовать в неявных преобразованиях, так что компилятор может помочь мне перехватить мои ошибки — и я затем стараюсь всегда также добавлять комментарий «// неявное предназначение» в ctors, где я явно намерен использовать их как преобразование ctors неявно. Я считаю, что это помогает мне писать более правильный код с меньшим количеством сюрпризов.
… Так что я бы сказал «да, иди добавить explicit
«- в конечном итоге вы будете рады, что сделали это, — это то, что я сделал, когда впервые узнал об этом, и я рад, что сделал».