侯捷 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; //编译器会调用下面的
相关推荐
CSDN_RTKLIB1 分钟前
临时对象产生与值类别范畴
c++
CSDN_RTKLIB19 分钟前
std::move 详细介绍
c++
散峰而望31 分钟前
【基础算法】高精度运算深度解析与优化
数据结构·c++·算法·链表·贪心算法·推荐算法
彩妙不是菜喵43 分钟前
STL精讲:string类
开发语言·c++
小屁猪qAq1 小时前
创建型之单例模式
开发语言·c++·单例模式
王老师青少年编程1 小时前
GESP(C++)考级(七级&八级)真题及详细题解(汇总版)
c++·题解·真题·gesp·csp·七级·八级
2501_944332161 小时前
深圳的售后服务系统解决方案有哪些提供商?
笔记
weixin_440730501 小时前
04python编程笔记-01基础知识+02三种结构
java·笔记·python
凯子坚持 c1 小时前
C++大模型SDK开发实录(三):流式交互协议SSE解析与httplib实现原理
开发语言·c++·交互
WYH2871 小时前
TTSY-学习笔记1
笔记·学习