成员模板、模板的偏特化和特化、模板模板参数

本文探讨了C++中的成员模板,它们允许在类内部定义模板,常用于实现利用派生类进行初始化的功能。以标准库中的pair为例,解释了如何使用派生类鲫鱼和麻雀创建鱼类和鸟类对象。接着,介绍了模板的特化,如通过hash<long>()创建临时对象。最后,讲解了模板的偏特化,包括个数和范围上的偏特化,以及typename和class在模板参数中的作用。
摘要由CSDN通过智能技术生成

成员模板就是在一个类里面再声明一个模板,一般来说这个模板是为了能够在类里面实现利用派生类对其进行一个初始化。为了设计一个构造函数,以pair为例子。


利用派生类鲫鱼和麻雀,来构造父类的对象,鱼类和鸟类。这就是成员模板在标准库里的用途。


模板的特化:

template <class Key>
struct hash{};//泛化
template<>//特化
struct hash<char>{
	size_t operator() (char x) const { return x;}
};
template<>
struct hash<int>{
	size_t operator() (int x) const { return x;}
};
template<>
struct hash<long>{
	size_t operator() (long x) const { return x;}
};
如果我们指定了任意的类型,都会去泛化里面,如果这个类型是char,int,long被我们特化过的,就选择特化的版本。

如 cout << hash<long>()(1000)<< endl;  hash<long>()表示一个临时对象。


模板的偏特

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值