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值。不知道为什么要设计成这样?

 

posted @   妖山鬼店  阅读(24)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
点击右上角即可分享
微信分享提示