侯捷 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; //编译器会调用下面的
相关推荐
d111111111d21 小时前
STM32中为什么会有APB1和APB2两个外设有什么区别
笔记·stm32·单片机·嵌入式硬件·学习
71-31 天前
C语言练习题——判断水仙花数(0-100000)
c语言·笔记·学习
摇滚侠1 天前
GIT版本管理工具轻松入门 | TortoiseGit,Git 介绍软件安装配置,笔记01
笔记·git
锦轩韶华1 天前
计网期末复习--选择题
笔记
郭庆汝1 天前
(三)自然语言处理笔记——Transformer
笔记·自然语言处理·transformer
爱凤的小光1 天前
图漾GM461-E1相机专栏
c++
qwepoilkjasd1 天前
C++智能指针介绍
c++
d111111111d1 天前
STM32外设学习--USART串口外设--学习笔记。
笔记·stm32·单片机·嵌入式硬件·学习
摇滚侠1 天前
GIT版本管理工具轻松入门 | TortoiseGit,解决冲突,笔记07
笔记·git
·白小白1 天前
力扣(LeetCode) ——43.字符串相乘(C++)
c++·leetcode