explicit关键字

本文介绍了C++中explicit关键字的作用及使用场景。explicit关键字用于阻止单参数构造函数的隐式转换,有助于避免非预期的类型转换导致的问题。文章强调了在大多数情况下,显式声明构造函数为explicit是一个良好的编程实践。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

explicit关键字

最近刷题过程中遇到了关于explicit关键字方面的知识,隐式转换有时候会有程序逻辑的问题,还是值得学习下

explicit关键字是阻止转换构造函数进行隐式转换的发生


当构造函数前没有explicit关键字修饰单参数的构造函数可以做到隐式转换,在上边a2对象的构造过程中只调用构造函数


可以看出当构造函数加上explicit关键字后,编译器就会报错,这里无法将整型对象1转换为AA类型的对象


当构造函数为多个参数时,这样的编译也是无法通过的

explic关键字只能用于类内部饿构造函数声明上,而不能用在类外部的函数定义上。

effective c++中说:被声明为explicit的构造函数通常比其non_explicit兄弟更受欢迎。因为他们禁止编译器执行非预期(往往也不被预期)的类型转换。除非我有一个好理由允许构造函数被用于隐式类型转换,否则我会把他声明为explicit。我鼓励你遵循相同的政策。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值