当前位置 主页 > 网站技术 > 代码类 >

    C++ 泛型编程详解(3)

    栏目:代码类 时间:2020-02-06 21:08

    类模板具体化,类模板的具体化分为部分具体化和全部具体化两种

    template<typename T1, typename T2>
    class Test {
    public:
     Test() {
     cout << "T1 and T2" << endl;
     }
    };
    // 部分具体化
    template<typename T1>
    class Test<T1, int> {
    public:
     Test() {
     cout << "T1 and int" << endl;
     }
    };
    // 部分具体化
    template<typename T2>
    class Test<long, T2> {
    public:
     Test() {
     cout << "long and T2" << endl;
     }
    };
    // 全部具体化
    template<>
    class Test<long, int> {
    public:
     Test() {
     cout << "long and int" << endl;
     }
    };
    // 分别创建上面四个类
    Test<char, char>();
    Test<char, int>();
    Test<long, char>();
    Test<long, int>();

    成员模板

    成员模板简单说就是模板中的模板

    class Base1 { };
    class Base2 { };
    class Test1 : public Base1 { };
    class Test2 : public Base2 { };
    template<typename T1, typename T2> 
    class Pair {
    public:
     T1 t1;
     T2 t2;
     Pair(T1 t1, T2 t2) : t1(t1), t2(t2) {
     }
     // 类模板中的成员模板
     template<typename U1, typename U2>
     Pair(const Pair<U1, U2>& pair) : t1(pair.t1), t2(pair.t2){
     }
    };
    Pair<Base1*, Base2*>(Pair<Test1*, Test2*>(new Test1, new Test2));

    如果未特殊说明,以上测试均是在win10 vs2017 64bit编译器下进行的

    总结

    以上所述是小编给大家介绍的C++ 泛型编程,希望对大家有所帮助!