侯捷 C++ part2 兼谈对象模型笔记——4 specialization 特化

4. specialization 特化

4.1 全特化 full specialization

模板是泛化,特化是泛化的反面,可以针对不同的类型,来设计不同的东西

  • 其语法为template<> struct xxx<type>
cpp 复制代码
template<>
struct hash<char>
{
...
    size_t operator()(char& x) const {return x;}
};

template<>
struct hash<int>
{
...
	size_t operator()(int& x) const { return x; }
};
  • 这里编译器就会用 int 的那段代码;注意:hash<int>() 是创建临时变量
cpp 复制代码
cout << hash<int>()(1000)

4.2 偏特化 partial specialization

4.2.1 个数上的偏

例如:第一个模板参数我想针对 bool 特别设计

注意绑定模板参数不能跳着绑定,需要从左到右

4.2.2 范围上的偏

例如:想要当模板参数是指针时特别设计

cpp 复制代码
C<string> obj1; //编译器会调用上面的
C<string*> obj2; //编译器会调用下面的
相关推荐
自小吃多1 分钟前
Capture软件原理图添加元器件笔记
笔记·嵌入式硬件
TJHHH.28 分钟前
文件包含漏洞
笔记·安全·文件包含
白色冰激凌41 分钟前
[SECS/GEM研究] (六)SML与数据序列化
c++·secs/gem
_小柏_1 小时前
总结下最近面试出现的问题
c++·面试
zjnlswd1 小时前
C# 学习笔记
笔记·学习
远离UE41 小时前
UE5 显存 虚拟内存 深入学习笔记
笔记·学习·ue5
我是慎独1 小时前
VulkanSceneGraph学习教程(十一)
c++·学习
HY小宝F1 小时前
从 APP 层打穿到传感器:树莓派 FFmpeg 底层学习笔记(一)V4L2/ALSA 踩坑与认知重构
笔记·学习·ffmpeg
向上的车轮2 小时前
GitHub开源破圈方法论:一个小白的实战成长笔记
笔记·开源·github
stolentime2 小时前
AT_agc066_a [AGC066A] Adjacent Difference题解
c++·算法·贪心算法·构造