侯捷 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; //编译器会调用下面的
相关推荐
wypywyp12 小时前
7.stm32 江协科技笔记2
笔记·科技·stm32
近津薪荼12 小时前
递归专题(2)——合并链表
c++·学习·算法·链表
maplewen.12 小时前
C++11 std::function
开发语言·c++
水饺编程12 小时前
第4章,[标签 Win32] :文本尺寸的度量
c语言·c++·windows·visual studio
蒹葭玉树12 小时前
【C++上岸】C++常见面试题目--操作系统篇(第二十九期)
java·c++·面试
日更嵌入式的打工仔12 小时前
嵌入式软件开发工具与方法
笔记
浅念-12 小时前
C语言——自定义类型:结构体、联合体、枚举
c语言·开发语言·数据结构·c++·笔记·学习·html
sayang_shao12 小时前
YOLOv8n 输入输出格式笔记
笔记·yolo
AI视觉网奇12 小时前
ue slot 插槽用法笔记
笔记·学习·ue5
Jack___Xue12 小时前
LangGraph学习笔记(二)---核心组件与工作流人机交互
笔记·学习·人机交互