C++中explicit抑制构造函数定义的隐式转换。按理下边的直接初始化也有类型转换啊,为什么不报错
发布网友
发布时间:2022-03-05 16:46
我来回答
共2个回答
热心网友
时间:2022-03-05 18:15
explicit主要用于防止隐式转换,用于修饰构造函数、复制构造函数;
A a1(5.2); //这里5.2是作为形参对象, 这里会隐式发生形参的数据类型转换,但仍符合构造函数要求
A a2 = 5.2; //这里5.2是作为对象,明显不符A类的初始化构造函数;
热心网友
时间:2022-03-05 19:33
A a1(5.2)//这里是直接显式调用了构造函数,这是可以的。
A a2 = 5.2//这个过程用伪代码表示就是:
int temp1 = 5.2;
A temp2 = temp1;//这一步行不通
A a2 = temp2;