侯捷 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; //编译器会调用下面的
相关推荐
0 0 02 小时前
CCF-CSP 39-2 水印检查(watermark)【C++】
c++·算法
plus4s3 小时前
2月15日(78,80,81题)
c++·算法·图论
日更嵌入式的打工仔5 小时前
LAN9253中文注释第七章
笔记·原文翻译
zmzb01036 小时前
C++课后习题训练记录Day104
开发语言·c++
honiiiiii6 小时前
SMU winter week4
c++
zmzb01037 小时前
C++课后习题训练记录Day105
开发语言·c++·算法
闻缺陷则喜何志丹7 小时前
【拆位法】P8743 [蓝桥杯 2021 省 A] 异或数列|普及+
c++·蓝桥杯·位运算·拆位法
fpcc7 小时前
跟我学C++中级篇——Concepts的循环依赖
c++·模板和元编程
訫悦8 小时前
C++自带的set get语法(MSVC)
开发语言·c++
墨雪不会编程8 小时前
C++之【list详解篇一】如何玩好链表
c++·链表·list