侯捷 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; //编译器会调用下面的
相关推荐
Honker_yhw18 小时前
大数据管理与应用系列丛书《数据挖掘》(吕欣等著)读书笔记-Logistic回归
笔记·学习
Brilliantwxx20 小时前
【C++】 继承与多态(中)
开发语言·c++·笔记·算法
MY_TEUCK1 天前
【2026最新Python+AI学习基础】Python 入门笔记篇
笔记·python·学习
青瓦梦滋1 天前
C++的IO流与STL的空间配置器
开发语言·c++
鱼很腾apoc1 天前
【学习篇】第20期 超详解 C++ 多态:从语法规则到底层原理
java·c语言·开发语言·c++·学习·算法·青少年编程
不吃土豆的马铃薯1 天前
4.SGI STL 二级空间配置器 allocate 与_S_refill 源码解析
c语言·开发语言·c++·dreamweaver·内存池
fufu03111 天前
vscode配置C/C++环境,用GDB调试简单程序分享
开发语言·c++
nnsix1 天前
设计模式 - 模板方法模式 笔记
笔记·设计模式·模板方法模式
水云桐程序员1 天前
C++变量的概念及用法
开发语言·c++
水饺编程1 天前
第5章,[Win32 章节] :几种典型的颜色
c语言·c++·windows·visual studio