侯捷 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; //编译器会调用下面的
相关推荐
weixin_4617694011 分钟前
15. 三数之和
c++·算法·leetcode·三数之和
koo3641 小时前
pytorch深度学习笔记12
pytorch·笔记·深度学习
小镇学者1 小时前
【c++】C++字符串删除末尾字符的三种实现方法
java·开发语言·c++
ue星空2 小时前
R3注入反截图
c++
塔尖尖儿2 小时前
For循环中++i与i++有什么不一样?
c++
Ralph_Y2 小时前
C++虚继承
开发语言·c++
ZzZz_ing2 小时前
2026 - 零碎知识随记录
c++
SweetCode2 小时前
【无标题】
开发语言·c++·算法
慕容雪_2 小时前
运维笔记-网络共享
运维·笔记·网络共享
王老师青少年编程3 小时前
信奥赛C++提高组csp-s之拓扑排序详解
c++·算法·拓扑排序·csp·信奥赛·csp-s·提高组