侯捷 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; //编译器会调用下面的
相关推荐
lxp1997412 小时前
vue笔记摘要-更新中
前端·vue.js·笔记
wh_xia_jun3 小时前
桑拿控制器项目持久化层笔记
笔记
立志成为大牛的小牛3 小时前
数据结构——五十二、散列函数的构造(王道408)
数据结构·笔记·程序人生·考研·算法
阿波茨的鹅4 小时前
VSCode C++ 项目配置教程
c++·ide·vscode
程序员与背包客_CoderZ4 小时前
C/C++版LLM推理框架Llama.cpp——入门与编码实战
c语言·开发语言·网络·c++·人工智能·语言模型·llama
喵了几个咪4 小时前
C++ IDE:最适合 C++ 初学者的 IDE 是什么?
开发语言·c++·ide
yuxb734 小时前
Kubernetes 核心概念与微服务架构解析
笔记·kubernetes
2501_941802485 小时前
C++高性能并发编程实战:从多线程管理到内存优化与任务调度全流程解析
java·开发语言·c++
zzzsde5 小时前
【C++】哈希表实现
数据结构·c++·哈希算法·散列表
Elias不吃糖5 小时前
C++ 中“编译器自动帮我传参”和“我自己写初始化”的本质区别
c++