当我使用最近发布的Cppcheck 1.69对我的代码1进行检查时,它显示了许多我原本不希望出现的消息。禁用noExplicitConstructor后,发现所有这些消息都是相同类型的。但我发现,我不是唯一一个收到许多新Cppcheck消息的人,请看LibreOffice分析结果(我被允许公开显示): 有经验的程序员会怎么做: 抑制检查? 大规模引入explicit关键字? 1当然,这不是我的代码,而是我在工作中必须处理的代码,它是遗留代码:混合了C和C++,使用了几种(之前的)标准版本(比如说C++98),并且是一个相当庞大的代码库。
我过去因为隐式转换带来的性能损失和纯粹的错误而受到了打击。因此,我倾向于对所有不想参与隐式转换的构造函数都使用explicit关键字,以便编译器可以帮助我捕获错误-然后我还尝试在那些我明确希望它们被用作隐式转换构造函数的构造函数中添加“// implicit intended”注释。我发现这有助于我编写更正确、更少出乎意料的代码。所以我会说,“是的,请加上explicit”,从长远来看,你会感到高兴的-当我第一次知道它时,我就这样做了,我很高兴自己这样做了。
explicit
,并在需要隐式转换时省略它。 - juanchopanza