【C++】explicit
1.【C++】const与constexpr2.【C++】vector3.【C++】创建对象写法4.【C++】域作用符的作用5.【C++】map6.【C++】类7.【C++】NULL与nullptr的区别8.【C++】cmath9.【C++】struct10.【C++】string11.【C++】unordered_set12.【C++】基本类型13.【C++】algorithm14.【C++】命名空间15.【C++】缺省参数16.【C++】函数重载17.【C++】引用18.【C++】auto19.【C++】基于范围for循环20.【C++】存储区21.【C++】左值与右值
22.【C++】explicit
23.【C++】构造函数类别24.【C++】decltype25.【C++】remove_refrence26.【C++】typeid与RTTI27.【C++】using28.【C++】引用折叠、万能引用和完美转发1、介绍
C++中的explicit关键字只能用于修饰只有一个参数的类构造函数, 它的作用是表明该构造函数是显示的, 而非隐式的,跟它相对应的另一个关键字是implicit, 意思是隐藏的,类构造函数默认情况下即声明为implicit(隐式).
2、隐式转换
在C++中, 如果的构造函数只有一个参数时, 那么在编译的时候就会有一个缺省的转换操作:将该构造函数对应数据类型的数据转换为该类对象.
explicit关键字的作用就是防止类构造函数的隐式自动转换.
explicit关键字只对有一个参数的类构造函数有效, 如果类构造函数参数大于或等于两个时, 是不会产生隐式转换的,所以explicit关键字也就无效了.
3、特殊情况
但是, 也有一个例外, 就是当除了第一个参数以外的其他参数都有默认值的时候, explicit关键字依然有效, 此时, 当调用构造函数时只传入一个参数, 等效于只有一个参数的类构造函数,
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
2023-08-07 【VSCode】编辑器报#include错误
2023-08-07 【GCC】在Windows下使用GCC编译程序