一个参数的构造函数,则系统会将参数对应类型自动转换为指定类型,
如下:
class MyClass
{
public:
MyClass( int num );
}
MyClass obj = 10; // OK
系统能够自动根据构造函数MyClass( int num )将int类型转换为MyClass类型;这就是隐式转换。
那么,对应的就有显示转换,这就是explicit关键字的作用,
如下:
class MyClass
{
public:
explicit MyClass( int num );
}
那么,
MyClass obj = 10; // Fail
因为该转换不会自动进行,如果需要,则必须进行显示转换,如下:
MyClass obj(10);
或者
MyClass obj = static_cast<int>10;