使用强制转换构造函数不好吗?为什么代码质量检查器(在我的情况下为cppcheck)会不断建议在单参数构造函数之前添加显式的?
如果我想怎么办
class MyClass {
A(int) {}
};
A a = 1;
如果我遵循“建议”并写
class MyClass {
explicit A(int) {}
};
A a = 1;
会抛出一个错误,但是如果我使用第一个错误,我将警告我必须记录以通过代码审查。
这样的隐式类类型转换可以很容易地无意使用。使用此转换构造函数,接受MyClass
作为参数的每个函数或成员函数也将接受int
。因此,int
传递给该函数的每个函数都将转换为一个临时MyClass
函数,该函数完成后将被丢弃。可能不是您想要的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句