泛化(模板)
功能:使类或者函数可以应对于多种类型的情况。
例子:
template<typename T, int N>
class Container {
T data[N];
};
Container<int, 10> a;
Container<double, 20> b;
这样Container这个类就可以灵活存储各种类型的元素。
template<typename T>
const T& max(const T& a, const T& b) {
return a < b ? b : a;
}
max(1, 2);
max(1.0, 2.0);
这样max函数就可以灵活应对于不同的类型。
模板的特化
模板的特化指的是对模板参数的某些特别情况进行特殊实现,在模板匹配类型时,如果发现有合适的特化的模板,会优先使用特化的模板
偏特化
偏特化即特化部分模板参数,如:
template<typename T, typename U>
class A {
// ...
};
// 偏特化:
template<typename T>
class A<int, T> {
// ...
};
全特化
全特化即特化所有模板参数
template<>
class A<int, int> {
// ...
};