侯捷 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; //编译器会调用下面的
相关推荐
羑悻的小杀马特6 分钟前
C++与Redis高效交互:通过optional与迭代器玩转String/List/Set......,打造高性能存储方案!
c++·redis·交互
+++.19 分钟前
c++雪花屏(vsCode+cmake+mingw+ninja)
开发语言·c++·vscode
兜兜转转了多少年24 分钟前
《Prompt Engineering白皮书》笔记04 System / Context / Role 三种提示工程
人工智能·笔记·prompt
小年糕是糕手24 分钟前
【C++】内存管理(下)
java·c语言·开发语言·数据结构·c++·算法
一叶之秋141225 分钟前
深入剖析vector的底层实现原理
c++
艾莉丝努力练剑28 分钟前
【Linux基础开发工具 (六)】Linux中的第一个系统程序——进度条Linux:详解回车、换行与缓冲区
java·linux·运维·服务器·c++·centos
ZouZou老师30 分钟前
C++设计模式之单例模式:以小区快递柜为例
c++·单例模式·设计模式
蜗牛love天空34 分钟前
qt窗口机制和mfc窗口机制
c++
定义小花39 分钟前
c++ cmake qt
开发语言·c++·qt
BlackWolfSky39 分钟前
ES6 学习笔记3—7数值的扩展、8函数的扩展
前端·javascript·笔记·学习·es6