谁能解释为什么非单参数构造函数标记为显式编译?
据我了解,这在这里绝对是无用的关键字,那么为什么它编译时没有错误呢?
class X
{
public:
explicit X(int a, int b) { /* ... */}
};
在 C++03 中,在这种特殊情况下,标记两个参数构造函数是没有意义的explicit
。但这在这里可能有意义:
explicit X(int i, int j=42);
因此,标记一个两参数构造函数explicit
不一定是错误。
在 C++11 中,显式的使用会阻止您执行此操作:
X x = {1,2};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)