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

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

(1)函数模板:

1.1函数模板定义及使用:

template <typename T>// 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<int,int>(a, b) << endl;

    cout << compare<char*,char*>(d,c) << endl;

    return 0;

}

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

(2)类模板:

2.1类模板的定义及使用

template <class type>

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

};

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

}

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

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

        private:type c;

}

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值