在C++中如果一个类的构造函数中只有一个参数,且构造函数前面没有任何的关键字,也就是默认情况下这个构造函数是一个隐式构造函数,当是隐式构造函数的时候,在编译时,会有一个转换操作,即将该构造函数对应数据类型的数据转换为该类对象,也就是:
class kkk
{
public:
kkk(int i)
{
this->my_value = i;
}
private:
int my_value;
}
int main()
{
kkk p1 = 5; //这样是可以运行
}
上述例子相当于
kkk p1(10)
在构造函数有多种情况使,且这几种情况的参数都只有一个时,为了 防止构造函数出现错误,需要将隐式转换变为显示转换,在前边加上关键字explicit,这样就防止避免出错。
当构造函数的多于一个时,那么关键字explicit无效,还有一种情况,即使有多个参数,但只有一个非默认参数时关键字explicit仍然有效。