侯捷 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; //编译器会调用下面的
相关推荐
myloveasuka1 小时前
Java与C++多态访问成员变量/方法 对比
java·开发语言·c++
2301_821700531 小时前
C++编译期多态实现
开发语言·c++·算法
奥地利落榜美术生灬2 小时前
c++ 锁相关(mutex 等)
开发语言·c++
xixihaha13242 小时前
C++与FPGA协同设计
开发语言·c++·算法
小小怪7502 小时前
C++中的函数式编程
开发语言·c++·算法
Yupureki3 小时前
《MySQL数据库基础》1. 数据库基础
c语言·开发语言·数据库·c++·mysql·oracle·github
汉克老师4 小时前
GESP2026年3月认证C++二级( 第二部分判断题(1-10))
c++·gesp三级·gesp3级
样例过了就是过了5 小时前
LeetCode热题100 N 皇后
数据结构·c++·算法·leetcode·dfs·深度优先遍历
杨小扩6 小时前
OpenAI Codex CLI 命令行参考笔记
人工智能·笔记
做cv的小昊6 小时前
大语言模型系统:【CMU 11-868】课程学习笔记06——Transformer学习(Transformer)
笔记·学习·语言模型