侯捷 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 分钟前
【AES加密专题】3.工具函数的编写(1)
笔记·密码学·嵌入式·aes
嵌入式知行合一36 分钟前
时间管理方法论
笔记
儒雅的晴天1 小时前
git笔记
笔记·git
明洞日记1 小时前
【CUDA手册002】CUDA 基础执行模型:写出第一个正确的 Kernel
c++·图像处理·算法·ai·图形渲染·gpu·cuda
半夏知半秋1 小时前
kcp学习-通用的kcp lua绑定
服务器·开发语言·笔记·后端·学习
oioihoii2 小时前
程序员如何系统入门Vibe Coding?
c++
C+++Python2 小时前
C++类型判断
开发语言·c++
中屹指纹浏览器2 小时前
指纹浏览器底层沙箱隔离技术实现原理与架构优化
经验分享·笔记
张张努力变强2 小时前
C++类和对象(一):inline函数、nullptr、类的定义深度解析
开发语言·前端·jvm·数据结构·c++·算法
oioihoii2 小时前
C++线程编程模型演进:从Pthread到jthread的技术革命
java·开发语言·c++