侯捷 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; //编译器会调用下面的
相关推荐
圣光SG17 分钟前
Java Web入门基础知识笔记
java·前端·笔记
hold?fish:palm2 小时前
RDB全量快照备份
c++·redis·后端
盐焗鹌鹑蛋3 小时前
【C++】C++11:列表初始化、声明、STL升级
c++
蜡笔小电芯4 小时前
【电路设计】TVS 瞬态抑制二极管选型与应用笔记
笔记
ComputerInBook5 小时前
c 和 c++ 中的宏块(macro)
c语言·c++··宏块·宏指令
AA陈超6 小时前
004 T02 - 俯视角摄像机系统 设计文档
网络·c++·ue5·虚幻引擎
bu_shuo6 小时前
c与cpp中的argc和argv
c语言·c++·算法
蓝创精英团队6 小时前
VCPKG 跨平台C++ 库管理器
c++·vcpkg
三水不滴7 小时前
RAG 系统评测全梳理:三元组方法论 + 分层指标体系
经验分享·笔记
光影6277 小时前
MySQL基础入门
数据库·笔记·sql·学习·mysql·学习方法