侯捷 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; //编译器会调用下面的
相关推荐
ZouZou老师11 小时前
C++设计模式之装饰器模式:以家具生产为例
c++·设计模式·装饰器模式
ZouZou老师12 小时前
C++设计模式之桥接模式:以家具生产为例
c++·设计模式·桥接模式
呱呱巨基12 小时前
Linux 进程概念
linux·c++·笔记·学习
liulilittle12 小时前
C++ 浮点数封装。
linux·服务器·开发语言·前端·网络·数据库·c++
ZouZou老师12 小时前
C++设计模式之组合模式:以家具生产为例
c++·设计模式·组合模式
yong158585534312 小时前
2. Linux C++ muduo 库学习——原子变量操作头文件
linux·c++·学习
小小8程序员13 小时前
STL 库(C++ Standard Template Library)全面介绍
java·开发语言·c++
老王熬夜敲代码13 小时前
C++中的atomic
开发语言·c++·笔记·面试
Rousson14 小时前
硬件学习笔记--91 TMR型互感器介绍
笔记·学习
Ingsuifon14 小时前
yolov5模型迁移笔记
笔记·yolo