explicit关键字详解

34 篇文章 21 订阅
订阅专栏

在C++中,explicit关键字用来修饰类的构造函数,被explicit修饰的类的构造函数,不能发生相应的隐式类型转换,只能以显示的方式进行类型转换。

explicit使用注意事项:

explicit 关键字只能用于类内部的构造函数声明上。

explicit 关键字作用于单个参数的构造函数。

我们通过下面的例子来理解explicit关键字的使用:

如图,我们创建一个Person对象

在这里插入图片描述

在上面的代码中编译器自动将整型转换为Person类对象,实际上等同于下面的操作:

Person temp(10);
Person person = temp;

上面的所有的操作即是所谓的"隐式转换",如果要避免这种自动转换的功能,就需要关键字explicit了,将类的构造函数声明为"显式",也就是在声明构造函数的时候前面添加上explicit即可,这样就可以防止这种自动的隐式转换操作。

所以如果我们修改上面的MyClass类的构造函数为显式的,那么下面的代码就不能够编译通过了,如下所示,编译器已经报错。

在这里插入图片描述
在这里插入图片描述

如果改成显示转换,则编译成功。

在这里插入图片描述

C/C++常用关键字详解
dvlinker的技术专栏
08-03 9872
本文详细讲述了一些常用的或者有特殊用途的C/C++关键字
C++ explicit关键字用法详解
readyone的博客
01-08 4597
隐式类类型转换: 在C++语言中,类中的构造函数如果只含有一个参数,默认情况下存在一种隐式转换,即定义了转换为此类类型的隐式转换机制。然而,这种机制并非总是合理的,甚至容易产生错误,因此,新标准增加了explicit关键字,用来限制隐式转换。 下面的示例是隐式转换的机制 class Test { public: Test(); // 空构造函数 Test(double a); // 含一个参数的构造函数 Test(int a, int b); // 含两个参数的构造函数 T
explicit关键字
baidu_41553551的博客
07-06 2333
explicit关键字的作用就是防止类构造函数的隐式自动转换 explicit关键字只对有一个参数的类构造函数有效, 如果类构造函数参数大于或等于两个时, 是不会产生隐式转换的, 所以explicit关键字也就 无效了. 当除了第一个参数以外的其他参数都有默认值的时候, explicit关键字依然有效, 此时, 当调用构造函数时只传入一个参数, 等效于只有一个参数的类构造函数 class CxString // 没有使用explicit关键字的类声明, 即默认为隐式声明 { public:
C++explicit
最新发布
weixin_44259499的博客
08-24 957
explicit用于防止构造函数的隐式调用和类型转换。它适用于单参数构造函数,帮助你控制对象的创建方式,避免潜在的错误。当你明确知道某个构造函数不应该被隐式调用时,使用explicit是一个好习惯。掌握explicit关键字能够让你编写更健壮和可控的代码,避免不必要的隐式转换带来的问题。这一行代码是用42作为参数来显式调用MyClass的构造函数,创建并初始化了一个名为obj的对象。explicit关键字保证了这种对象创建必须是显式的,避免了不必要的隐式转换。
c++中的explicit关键字
cglover的专栏
06-10 626
c++中的explicit关键字 c++中的explicit关键字用来修饰类的构造函数,表明该构造函数是显式的,既然有"显式"那么必然就有"隐式",那么什么是显示而什么又是隐式的呢?如果c++类的构造函数有一个参数,那么在编译的时候就会有一个缺省的转换操作:将该构造函数对应数据类型的数据转换为该类对象,如
谈谈explicit关键字
热门推荐
ForNormandy的专栏
08-19 3万+
今天看到公司的代码内有大量的explicit关键字,但是老版的MSDN内例子并不完善,实在是不明白,最终从网上一篇文章内找到了答案:原来explicit是为了防止隐式使用拷贝构造函数的.以下附上从新版MSDN中找到的例子和网上那篇文章:// Copy From MSDNThis keyword is a declaration specifier that can only be appl
C++ - explicit关键字
平凡小智
07-25 2481
C++中关于explicit关键字详解
[C++] explicit 关键字
学习笔记
05-23 3106
C++ 只有explicit关键字,没有implicit关键字。编译器允许解析函数的参数时,对参数作隐式转换。也就是说,编译器能够使用带单个参数的构造函数,将函数参数转换为正确的类型。 带有单个形参的构造函数定义了一种由实参类型到类类型的隐式转换。 下面的类带有可用于隐式转换的构造函数: class Foo { public: // single parameter constr...
C++explicit关键字详解
Aced96的博客
08-31 868
C++中的explicit关键字只能用于修饰 只有一个参数的类构造函数。 explicit的作用:表明该构造函数是 显式 的,而非隐式的。 跟explicit相对应的另一个关键字是implicit,意思是隐藏的。 类构造函数默认情况下即声明为implicit(隐式)。 class CxString { public: CxString(int size) { _size = size; //string的预设大小
深入理解C++中的explicit关键字
Belial计算机视觉&机器视觉专栏
08-07 8162
深入理解C++中的explicit关键字, C++中的explicit关键字只能用于修饰只有一个参数的类构造函数, 它的作用是表明该构造函数是显示的, 而非隐式的, 跟它相对应的另一个关键字是implicit, 意思是隐藏的,类构造函数默认情况下即声明为implicit(隐式)。
细说关键字explicit(显式)
weixin_42618021的博客
02-29 462
两个规则: explicit 修饰构造函数时,可以防止隐式转换和复制初始化 explicit 修饰转换函数时,可以防止隐式转换,但 按语境转换 除外。 使用在例子中的具体说明 struct A { A(int) { } operator bool() const { return true; } }; struct B { explicit B(int) {} ...
关键字explicit
zimovv的博客
07-04 190
explicit作用于类的单参数构造函数。作用是禁止构造函数参数进行隐式类型转换 分析: 只能用于构造函数 只能用于含有单个参数的构造函数。因为无参数肯定不会做类型转换,多个参数默认要求显示类型转换。但是当构造函数有多个参数,只有一个参数没有默认值时,也会支持隐式类型转换,因此这时候explicit也时有效的。 很多C++库中都使用了explicit,抑制隐式类型转换可以避免难以察觉的逻辑错误。...
写文章

热门文章

  • C语言rand()函数产生随机数详解 38190
  • C/C++const关键字详解(全网最全) 25598
  • matlab绘制折线图基本操作 21445
  • 粒子群算法 14991
  • scanf语句的使用和执行原理 13377

分类专栏

  • Java 10篇
  • 前端 1篇
  • MySql
  • C/C++ 34篇
  • 图像处理 4篇
  • Qt 11篇
  • 计算机网络 1篇
  • 优化算法 3篇
  • matlab 3篇
  • 设计模式 11篇
  • 硬件相关 2篇
  • 我的项目 2篇
  • 刷题总结 1篇
  • 学习工作BUG处理 9篇

最新评论

  • Git推送被拒

    CorgiOxO: 感謝分享

  • matlab绘制局部放大图

    m0_69194892: 怎么去掉局部放大图的坐标间隔呢?只想要框里的图

  • matlab绘制局部放大图

    dapengbao: 用文件里面的保存为 这样子图也在里面

  • 粒子群算法

    HappyCodingLife: 评估函数 FUNC == 2 时候,你的 val2 不是恒等于 0 嘛表情包

  • 反射快速入门

    CSDN-Ada助手: 不知道 Python入门 技能树是否可以帮到你:https://edu.csdn.net/skill/python?utm_source=AI_act_python

最新文章

  • Git推送被拒
  • SpringMVC工作原理
  • 反射快速入门
2024年21篇
2023年51篇
2022年18篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

子非鱼Swx

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值

玻璃钢生产厂家昆明玻璃钢雕塑供应商济源校园玻璃钢景观雕塑定制玻璃钢排水槽雕塑泰州玻璃钢雕塑安装杭州玻璃钢雕塑款式齐全揭阳玻璃钢卡通雕塑出厂价格广场标识玻璃钢人物雕塑公司江苏玻璃钢花盆设计企业植物玻璃钢雕塑供应厂家太原火烈鸟玻璃钢雕塑制作天津美诺玻璃钢雕塑洛阳玻璃钢彩绘雕塑加工价格武汉玻璃钢雕塑价格新乡中山玻璃钢雕塑大理市玻璃钢雕塑设计生产商苏州商场美陈批发珲春玻璃钢景观雕塑商城玻璃钢园林艺术雕塑江苏玻璃钢卡通雕塑定制浙江商业商场美陈多少钱蒙自市玻璃钢雕塑设计要多少钱高质量玻璃钢雕塑哪家便宜玻璃钢雕塑技术培训广西玻璃钢雕塑费用官渡区加工玻璃钢雕塑青岛茂名玻璃钢动物雕塑玄武春节商场美陈四川特色商场美陈价格玻璃钢花盆组景景德镇玻璃钢景观雕塑香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化