侯捷 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; //编译器会调用下面的
相关推荐
fqbqrr4 分钟前
2601,C++的模块1
c++
啊董dong6 分钟前
noi-2025年12月23号作业
数据结构·c++·算法·noi
青岛少儿编程-王老师9 分钟前
CCF编程能力等级认证GESP—C++8级—20251227
java·开发语言·c++
じ☆冷颜〃12 分钟前
二分查找的推广及其在排序与链表结构中的关联
网络·windows·经验分享·笔记·算法·链表
hd51cc16 分钟前
MFC打印技术
c++·mfc
爱吃生蚝的于勒30 分钟前
【Linux】零基础深入学习动静态库+深入学习地址
linux·运维·服务器·c语言·数据结构·c++·学习
崎岖Qiu41 分钟前
【设计模式笔记26】:深入浅出「观察者模式」
java·笔记·观察者模式·设计模式
_OP_CHEN42 分钟前
【从零开始的Qt开发指南】(十四)Qt 窗口之“三剑客”:工具栏、状态栏、浮动窗口进阶实战指南
开发语言·c++·qt·前端开发·gui开发·qt窗口
Noushiki44 分钟前
RabbitMQ 基础 学习笔记1
笔记·学习·rabbitmq
冷雨夜中漫步1 小时前
Kubernetes入门笔记 ——(4)Windows搭建k8s测试集群
windows·笔记·kubernetes