什么是拷贝构造函数?
如果类中没有拷贝构造函数,则编译器会提供一个值拷贝的拷贝构造函数,类似结构体直接赋值。
explicit关键字是什么?
explicit是C++中的一个关键字,它用来修饰只有一个参数的类构造函数,以表明该构造函数是显式的,而非隐式的。当使用explicit修饰构造函数时,它将禁止类对象之间的隐式转换,以及禁止隐式调用拷贝构造函数。
隐式类型转换
当下面将一个int类型的数值赋值给到一个double类型的数据,此时就会产生一个隐式类型转换。
int i = 1;
double d = i;
对于类型转换而言,并不是将值直接赋值给到左边的对象,而是在中间产生一个临时变量,例如右边的这个i
会先去构造一个临时变量,这个临时变量的类型是 [double] 。把它里面的值初始化为 1,然后再通过这个临时对象进行拷贝构造给d,这就是编译器会做的一件事。
同样的
那对于这个
d2
其实也是一样,2024会先去构造一个临时对象,这个临时对象的类型是[Date]把它里面的year初始化为2024,然后再通过这个临时对象进行拷贝构造给到d2
。