当我在我的代码 1 上使用(最近发布的)Cppcheck 1.69时,它显示了很多消息,我预期没有;-)禁用noExplicitConstructor
证明所有这些都属于这种类型。
但是我发现我并不是唯一一个有很多新Cppcheck消息的人,看看LibreOffice的分析结果(我可以公开展示):
有经验的程序员会做什么:
explicit
关键字?1 修改:这当然是 不是我的代码 ,但代码我必须继续工作,它是遗留代码:C和C ++在几种(预)标准版本中的混合,而且它是一个相当大的代码库。
答案 0 :(得分:8)
过去我被隐式转换引入的性能命中以及彻头彻尾的错误所困扰。所以我倾向于总是将explicit
用于所有构造函数,我不想参与隐式转换,以便编译器可以帮助我捕获我的错误 - 然后我尝试总是添加对ctors的“//隐含预期”注释,我明确打算将它们用作隐式转换ctors。我发现这有助于我编写更正确的代码,减少意外。
......所以我会说“是的,去加explicit
” - 从长远来看,你会很高兴你做的 - 这就是我第一次了解它时所做的,我很高兴我那样。