今天在看一个源程序的时候用到了explicit关键字。在网上查找了一下该关键字的作用。没有进行试验,只是整理了下:
1.explicit主要和构造函数一起使用.
2.当explicit修饰构造函数的时候,对于调用该构造函数进行进行 "隐式 "转换的代码将不会通过!
3.解除explicit的方式,就是使用强制转换。
例如:
class Test
{
public:
Test(int);
explicit Test(double)
private:
int nVal;
double dVal;
};
void Func(const Test&)
{
...
}
情况1:
void Func(2); //隐式转换
这是可以通过的。这种情况相当于
void Func(Test(2));
情况2:
void Func(2.0);
这个时候会通不过。需要显示转化:
void Func(Test(2.0));