默认情况下,在C++中,单参数构造函数可用作隐式转换运算符.这可以通过将构造函数标记为显式来抑制.
我宁愿将"explicit"作为默认值,这样编译器就无法静默使用这些构造函数进行转换.
有没有办法在标准C++中执行此操作?如果失败了,是否有一个pragma(或类似的)在Microsoft C++中可以用来做到这一点?那么g ++(我们不使用它,但它可能是有用的信息)?
不,你必须亲手完成.这是一种痛苦,但你当然应该养成使单个参数构造函数明确的习惯.我无法想象如果找到解决方案然后必须将代码移植到另一个平台,您会遇到的痛苦.你应该回避这样的编译器扩展,因为它会使代码不那么便携.