C++中有了类的概念,在类中有这样的关键字explicit。那么他的作用是什么呢?
举个例子:
#include <iostream>
class T1
{
public:
T1(int a)
{
num=a;
}
private:
int num;
};
class T2
{
public:
explicit T2(int a)
{
num=a;
}
private:
int num;
};
void main()
{
T1 t1=1; //1
T1 t1(1); //2
T2 t2=1; //3
T2 t2(1); //4
}
程序中定义了两个类,第一个类的构造函数没有加关键字explicit,第二个类的构造函数加了关键字explicit。
主函数中第一句代码是正确的,隐式调用了类T1的构造函数。第二句也是对的,显示调用该类的构造函数。第三句错误,编译后显示 无法从“int”转换为“T2”,也就是说没有隐式调用类T2的构造函数。第四句是调用该类构造函数的正确形式,即显示调用。
由此可见关键字explicit是放在类的构造函数前的,作用是禁止隐式调用该构造函数。