侯捷 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; //编译器会调用下面的
相关推荐
二哈赛车手1 小时前
新人笔记---ApiFox的一些常见使用出错
java·笔记·spring
于小猿Sup3 小时前
VMware在Ubuntu22.04驱动Livox Mid360s
linux·c++·嵌入式硬件·自动驾驶
xian_wwq4 小时前
【学习笔记】AGC协调控制系统概述
笔记·学习
x_yeyue4 小时前
三角形数
笔记·算法·数论·组合数学
憧憬成为java架构高手的小白5 小时前
docker学习笔记(基于b站多个视频学习)【未完结】
笔记·学习
小小编程路5 小时前
C++ 多线程与并发
java·jvm·c++
RainCity6 小时前
Java Swing 自定义组件库分享(七)
java·笔记·后端
程序leo源7 小时前
Qt窗口详解
开发语言·数据库·c++·qt·青少年编程·c#
東隅已逝,桑榆非晚7 小时前
字符函数和字符串函数
c语言·笔记
Upsy-Daisy7 小时前
AI Agent 项目学习笔记(七):RAG 高级扩展——过滤检索、PgVector 与云知识库
人工智能·笔记·学习