具有默认值的单参数构造函数是否可以进行隐式类型转换
我了解使用显式关键字来避免单参数构造函数或具有多个参数(其中只有第一个参数没有默认值)的构造函数可能发生的隐式类型转换。
但是,我想知道,在隐式转换方面,具有默认值的单参数构造函数的行为是否与没有默认值的构造函数相同?
I understand the use of the explicit keyword to avoid the implicit type conversions that can occur with a single argument constructor, or with a constructor that has multiple arguments of which only the first does not have a default value.
However, I was wondering, does a single argument constructor with a default value behave the same as one without a default value when it comes to implicit conversions?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
默认值的存在不会阻止单参数构造函数用于隐式转换:如果您想阻止它,则需要添加显式转换。
例如...:
正确编译和运行:
正确,也就是说,如果您想要将
int
隐式地变成struct X
。=23
部分(即构造函数的一个参数的默认值)不会阻止这一点。The existence of a default value does not stop the single-argument ctor from being used for implicit conversion: you do need to add
explicit
if you want to stop that.For example...:
compiles and runs correctly:
correctly, that is, if you want an
int
to become astruct X
implicitly. The=23
part, i.e. the default value for the one argument to the constructor, does not block this.