侯捷 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; //编译器会调用下面的
相关推荐
wuminyu20 小时前
Kafka中sendfile与mmap实现机制解析
java·linux·c语言·jvm·c++
开心就多写,一点就开心1 天前
导演视听语言与分镜系统笔记(一):景别系统、机位视点与时空连贯性设计
笔记·aigc·镜头·电影
疯狂打码的少年1 天前
【计算机网络】IPv6基础(特点、表示法、与IPv4对比)
网络·笔记·计算机网络
无小道1 天前
C++——列表初始化
c++·列表初始化
blueSatchel1 天前
c++action 编写(ros-humble)
c++·ros2
泡泡鱼(敲代码中)1 天前
MySQL基础学习笔记:从数据模型到DDL全掌握
开发语言·数据库·笔记·学习·mysql
江湖人称菠萝包1 天前
【Windows】《深入浅出Windows API程序设计:核心编程篇》笔记-Chapter4-进程
windows·笔记
老赵的博客1 天前
c++面试之从虚函数表到Rtti一次性讲清楚
c++·qt
傲世仙尊1 天前
System V 进程间通信详解:共享内存、消息队列与信号量(CSDN博客)
linux·开发语言·c++
今儿敲了吗1 天前
03停用词过滤
笔记·python