侯捷 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; //编译器会调用下面的
相关推荐
koo3641 天前
李宏毅机器学习笔记21-26周汇总
人工智能·笔记·机器学习
.小小陈.1 天前
数据结构2:单链表
c语言·开发语言·数据结构·笔记·学习方法
2401_841495641 天前
【数据结构】基于Floyd算法的最短路径求解
java·数据结构·c++·python·算法··floyd
立志成为大牛的小牛1 天前
数据结构——二十三、并查集的终极优化(王道408)
开发语言·数据结构·笔记·学习·程序人生·考研
全栈游侠1 天前
04-优先级与延时链表
笔记
im_AMBER1 天前
React 01
前端·javascript·笔记·react.js·前端框架·web
稻草猫.1 天前
文件 IO
java·笔记·后端·java-ee·idea
纵有疾風起1 天前
C++模版:模板初阶及STL简介
开发语言·c++·经验分享·开源
QT 小鲜肉1 天前
【个人成长笔记】Qt Creator快捷键终极指南:从入门到精通
开发语言·c++·笔记·qt·学习·学习方法
勇闯逆流河1 天前
【C++】用红黑树封装map与set
java·开发语言·数据结构·c++