侯捷 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; //编译器会调用下面的
相关推荐
Dream it possible!39 分钟前
LeetCode 面试经典 150_二叉搜索树_二叉搜索树的最小绝对差(85_530_C++_简单)
c++·leetcode·面试
风123456789~1 小时前
【OceanBase专栏】OB租户-创建实验
数据库·笔记·oceanbase
cmcm!1 小时前
学习笔记1
数据库·笔记·学习
麦烤楽鸡翅2 小时前
简单迭代法求单根的近似值
java·c++·python·数据分析·c·数值分析
Jay20021112 小时前
【机器学习】7-9 分类任务 & 逻辑回归的成本函数 & 逻辑回归的梯度下降
笔记·机器学习·分类
sulikey3 小时前
C++ 四十年:一段跨越时代的语言旅程
c++·c++40周年
WXG10113 小时前
【Flask】前后端交互示例
笔记·学习
d111111111d4 小时前
STM32--SPI通讯外设-学习笔记
笔记·stm32·单片机·嵌入式硬件·学习
d111111111d4 小时前
在STM32中有参宏定义define该怎么使用
笔记·stm32·单片机·嵌入式硬件·学习
-森屿安年-4 小时前
LeetCode 283. 移动零
开发语言·c++·算法·leetcode