侯捷 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; //编译器会调用下面的
相关推荐
fanged17 小时前
STM32(5)--HAL1(TODO)
笔记
码小猿的CPP工坊19 小时前
C++软件开发之内存泄漏闭坑方法
开发语言·c++
Benny_Tang19 小时前
题解:CF2164C Dungeon
c++·算法
grd419 小时前
RN for OpenHarmony 小工具 App 实战:屏幕尺子实现
笔记·harmonyos
丝斯201119 小时前
AI学习笔记整理(50)——大模型中的Graph RAG
人工智能·笔记·学习
青小莫20 小时前
C语言vsC++中的动态内存管理(内含底层实现讲解!)
java·c语言·c++
持梦远方20 小时前
算法剖析1:摩尔投票算法 ——寻找出现次数超过一半的数
c++·算法·摩尔投票算法
小+不通文墨20 小时前
“超声波测量声速”实验报告
经验分享·笔记·学习·学习方法
AI视觉网奇20 小时前
ue5 自定义 actor ac++ actor 用法实战
java·c++·ue5
明洞日记20 小时前
【软考每日一练002】进程调度机制详解
c++·ai·操作系统·进程