c++_explicit关键字、拷贝构造

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

explicit关键字是什么?

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

隐式类型转换

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

int i = 1;
double d = i;

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

引出explicit关键字

引用

参考文章

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值