GeekBand-C++STL与泛型编程-Week2

2017-03-13  本文已影响0人  雪箫KHY

泛化(模板)

功能:使类或者函数可以应对于多种类型的情况。

例子:

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> {
    // ...
};
上一篇下一篇

猜你喜欢

热点阅读