侯捷 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; //编译器会调用下面的
相关推荐
哈哈不让取名字2 分钟前
分布式日志系统实现
开发语言·c++·算法
知无不研8 分钟前
实现一个整形栈
c语言·数据结构·c++·算法
蒸蒸yyyyzwd12 分钟前
mapreduce步骤学习总结
笔记
ShineWinsu1 小时前
对于C++:模版初阶的解析
开发语言·c++·面试·笔试·函数··模版
saoys1 小时前
Opencv 学习笔记:轮廓发现(提取 + 绘制全流程)
笔记·opencv·学习
Max_uuc1 小时前
【C++ 硬核】告别 Excel 生成数组:利用 constexpr 实现编译期计算查找表 (LUT)
开发语言·c++·excel
m0_748248651 小时前
C++正则表达式攻略:从基础到高级应用
java·c++·正则表达式
退休钓鱼选手2 小时前
[CommonAPI + vsomeip]通信 原理 1
c++·自动驾驶
CSDN_RTKLIB2 小时前
【字符编码】源文件编码与字符字节序列
c++
2401_838472512 小时前
C++20概念(Concepts)入门指南
开发语言·c++·算法