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;
声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com