explicit关键字在C++中意味着什么?
我最近遇到了一些奇怪的类,它有三个构造函数:
class Class
{
public:
explicit Class(int );
Class(AnotherClass );
explicit Class(YetAnotherClass, AnotherClass );
// ...
}
Run Code Online (Sandbox Code Playgroud)
这对我来说没有意义 - 我认为显式关键字是为了保护编译器选择的构造免受外来类型的影响.
这是允许的吗?如果它,它是什么意思?
任何人都可以解释为什么非单参数构造函数标记为显式编译?据我所知,这里绝对是无用的关键字,为什么这个编译没有错误?
class X
{
public:
explicit X(int a, int b) { /* ... */}
};
Run Code Online (Sandbox Code Playgroud)