泛化(模板)
功能:使類或者函數(shù)可以應(yīng)對(duì)于多種類型的情況。
例子:
template<typename T, int N>
class Container {
T data[N];
};
Container<int, 10> a;
Container<double, 20> b;
這樣Container這個(gè)類就可以靈活存儲(chǔ)各種類型的元素搅吁。
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函數(shù)就可以靈活應(yīng)對(duì)于不同的類型簸呈。
模板的特化
模板的特化指的是對(duì)模板參數(shù)的某些特別情況進(jìn)行特殊實(shí)現(xiàn),在模板匹配類型時(shí)伤极,如果發(fā)現(xiàn)有合適的特化的模板蛹找,會(huì)優(yōu)先使用特化的模板
偏特化
偏特化即特化部分模板參數(shù),如:
template<typename T, typename U>
class A {
// ...
};
// 偏特化:
template<typename T>
class A<int, T> {
// ...
};
全特化
全特化即特化所有模板參數(shù)
template<>
class A<int, int> {
// ...
};