侯捷 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; //编译器会调用下面的
相关推荐
老赵的博客26 分钟前
c++ QT之动态库加载问题
c++·qt
(Charon)40 分钟前
【C++】定时器进阶:使用最小堆管理定时任务
c++·算法
hansang_IR1 小时前
【题解】 [省选联考 2021 A/B 卷] 卡牌游戏
c++·算法
lzx_0021 小时前
C++11(一)
开发语言·c++·算法
沪上企服通2 小时前
代账数据的可移植性设计:开放接口、账套导出与 exit strategy 工程笔记(上海 5 家样本对照)
笔记·策略模式
江湖人称菠萝包2 小时前
【Windows】《深入浅出Windows API程序设计:编程基础篇》笔记-Chapter8-子窗口控件
windows·笔记
小七在进步3 小时前
C++入门(2)
java·jvm·c++
M78佐菲3 小时前
HTML学习笔记
linux·笔记·学习·tcp/ip·html
en.en..3 小时前
C语言核心解析:#define与typedef本质区别
开发语言·c++·算法
码匠许师傅4 小时前
【设计模式精讲】26.策略模式(Strategy)
c++·设计模式·策略模式·uml