STL(5) 必要基础:操作符重载和模板
目录
操作符重载 operator overloaded
四个不能重载的操作符
- ::域
- . 成员获取
- .*
- ?:判断语句
基本语法
下图说明了对于不同数量的变量如何去重载

模板
类模板

模板的简单应用,设计的时候将类型保留,暂定为T,将内部所有需要类型的地方都改为T
这样就形成了一个模板类/类模板
使用时,需要用尖括号告诉编译器所指定T的类型
函数模板

使用时不需要指定类型,由编译器自动推导,在调用的时候,T就是stone,会查找stone中的操作符重载进行调用
为什么函数不需要指定
编译器没有线索,不知道类的类型
成员模板
有这个东西,暂时不讲
泛化和特化(全特化)
已经有了泛化的类型
但是,对于某些类型,我希望对这个类型有更好的做法,这就是泛化和特化的思想,实现方法就是traits
最上面的是泛化
但是如果是int类型或是double类型,就用了特化的形式

hash中的特化

偏特化 Partial specialization
两个模板参数,绑定了一个,那么就是偏的特化

本来指定了两个模板参数,现在将第一个绑定为bool,第二个仍是泛化类型,
就是一种偏特化

第一个是泛化版本
如果类是一个指针,那么就有一个特化版本

浙公网安备 33010602011771号