成员模板就是在一个类里面再声明一个模板,一般来说这个模板是为了能够在类里面实现利用派生类对其进行一个初始化。为了设计一个构造函数,以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>()表示一个临时对象。
模板的偏特