美文网首页
GeekBand-C++STL与泛型编程-Week2

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

作者: 雪箫KHY | 来源:发表于2017-03-13 23:05 被阅读0次

    泛化(模板)

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

    例子:

    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> {
        // ...
    };
    

    相关文章

      网友评论

          本文标题:GeekBand-C++STL与泛型编程-Week2

          本文链接:https://www.haomeiwen.com/subject/sxxcnttx.html