什么是拷贝构造函数?
如果类中没有拷贝构造函数,则编译器会提供一个值拷贝的拷贝构造函数,类似结构体直接赋值。

explicit关键字是什么?

explicit是C++中的一个关键字,它用来修饰只有一个参数的类构造函数,以表明该构造函数是显式的,而非隐式的。当使用explicit修饰构造函数时,它将禁止类对象之间的隐式转换,以及禁止隐式调用拷贝构造函数

隐式类型转换

当下面将一个int类型的数值赋值给到一个double类型的数据,此时就会产生一个隐式类型转换

int i = 1;
double d = i;

对于类型转换而言,并不是将值直接赋值给到左边的对象,而是在中间产生一个临时变量,例如右边的这个i会先去构造一个临时变量,这个临时变量的类型是 [double] 。把它里面的值初始化为 1,然后再通过这个临时对象进行拷贝构造给d,这就是编译器会做的一件事。
在这里插入图片描述
同样的
在这里插入图片描述那对于这个d2其实也是一样,2024会先去构造一个临时对象,这个临时对象的类型是[Date]把它里面的year初始化为2024,然后再通过这个临时对象进行拷贝构造给到d2

引出explicit关键字

引用

参考文章

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐