侯捷 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; //编译器会调用下面的
相关推荐
c++之路8 小时前
CMake 系列教程(二):基础命令详解
开发语言·c++
南境十里·墨染春水12 小时前
C++ 工厂模式:从入门到进阶,彻底掌握对象创建的艺术
开发语言·c++·算法
一拳一个呆瓜15 小时前
【STL】_SCL_SECURE_NO_WARNINGS
c++·stl
小小编程路15 小时前
C++ 异常 完整讲解
开发语言·c++
Frank学习路上19 小时前
【C++】面试:关键字与语法特性
c++·面试
三品吉他手会点灯19 小时前
STM32F103 学习笔记-24-I2C-读写EEPROM(第1节)-I2C物理层介绍
笔记·stm32·学习
Irissgwe19 小时前
数据结构-栈和队列
数据结构·c++·c·栈和队列
万物更新_20 小时前
vue框架
前端·javascript·vue.js·笔记
点云侠20 小时前
PCL 生成三棱锥点云
c++·算法·最小二乘法
.道阻且长.21 小时前
C++ string 操作指南:接口解析
java·c语言·开发语言·c++