c++复习之泛型编程入门

目前感觉对泛型编程理解的不够深,现主要对泛型简单的应用做个总结。泛型编程主要包括:函数模板和类模板

(1)函数模板:

1.1函数模板定义及使用:

template // template 作为模板关键字,从原理上注意编译器并不是把函数模板处理成任意类型的函数

//而是编译器把函数模板通过具体的类型产生不同的函数,在定义和使用的过程中可以发现,编译器实际上对函数模板进行了两//次编译。

int compare(T &a, T &b){
    if (a == b)
        return 0;
    return a > b ? 1:-1;

}

int main(){
    int a = 10, b =11;
    char* c = "abc";
    char* d = "bcd";
    cout << compare(a, b) << endl;

    cout << compare(d,c) << endl;

    return 0;

}

//此函数要比函数重载简便很多,另外感觉stl中vector、queue、map应该也是用的泛型编程技术。

(2)类模板:

2.1类模板的定义及使用

template

class Point3d{
public:
    Point3d(type x,type y,type z){
        _x = x;
        _y = y;
        _z = z;
    }
    void Print(){
        cout << "x:" << _x<         cout << "y:" << _y<< endl;
        cout << "z:" << _z<< endl;
    }
private:
    type _x;
    type _y;
    type _z;

};

int main(){
    Point3d p1(1,2,3);//这里要注意,使用时需指定类型
    p1.Print();
    return 0;

}

2.2模板类也可以派生普通类

class Point2d:public Point3d{    //这就是模板类的派生。此时需要指定模板类的类型

        private:type c;

}

.........更新待续

 

你可能感兴趣的:(c++复习之泛型编程入门)