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;
}
运行结果:

本文深入探讨了C++中explicit关键字的用法,特别是在构造函数中如何防止隐式类型转换,通过具体代码示例展示了explicit构造函数的声明与使用。
337

被折叠的 条评论
为什么被折叠?



