C++提供了关键字explicit,禁止通过构造函数进行的隐式转换。声明为explicit的构造函数不能在隐式转换中使用
class Data
{
private:
int num;
public:
//explicit 该有参构造函数 不允许 隐式转换
explicit Data(int n):num(n)
{
cout<<"有参构造"<<endl;
}
~Data()
{
cout<<"析构函数"<<endl;
}
void showNum(void)
{
cout<<"num = "<<num<<endl;
}
};
int main(int argc, char *argv[])
{
//隐私转换
//Data data = 10;//explicit 该有参构造函数 不允许 隐式转换
Data data(10);//ok
data.showNum();
Data ob=Data(10);//ok
ob.showNum();
return 0;
}
运行结果: