1-3 标准库、转换函数、explicit、代理模式
1 标准库
整个标准库都是用模板做的,继承非常少(现在不一定),也几乎没有虚函数,
所以它的思维不这种是面向对象的,而是模板泛型编程的思维
Dev-C++ 5.6编译器了解一下
2 转换函数:类型互相转换(转出去、转进来)
转出去:一般用operator type() const
转进来:一般用non-explicit-one-argument构造函数
上面的是转出去,可以看懂
上例是转进来,去掉了“转出去”函数,同时重载加号函数。
可以看懂。
第三种情况:
既有转出去,又有转进来,还有加。
两条路都能走通,所以就二义性了。
https://doc.qt.io/qt-5/classes.html // 临时网址
第四种情况:
explicit:明白的,明显的,表示:不要给我自动把4转成Fraction
无法相加,因为无法将4转为Fraction。
上面这些都是隐式转换
中括号也可以重载,代理模式:
vector偏特化为了bool类型,正常[]应该返回bool,但这里返回reference,用reference来“代理”本应返回的bool类型,reference有个转换函数可以转为bool值。不知道为什么要设计成这样?
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义