C++中的explicit关键字只能用于修饰只有一个参数的类构造函数, 它的作用是表明该构造函数是显示的, 而非隐式的。
跟它相对应的另一个关键字是implicit, 意思是隐藏的,类构造函数默认情况下即声明为implicit(隐式)。
eg:
Class CNoExplicit
{
public:
int nNum;
CNoExplicit(int nNum)
{
nNum = nNum;
}
}
CNoExplicit noex(10); // ok
CNoExplicit noex = 10; // ok
CNoExplicit noex; // error 因为没有默认构造函数
添加explicit关键字
Class CHaveExplicit
{
public:
int nNum;
explicit CHaveExplicit(int nNum)
{
nNum = nNum;
}
}
CNoExplicit noex(10); // ok
CNoExplicit noex = 10; // error 因为explicit取消了隐式转换
CNoExplicit noex; // error 因为没有默认构造函数