C++模版

1、模版

模版是实现代码重用的一种机制,可以实现类型参数化,意思就是在模版中参数类型也是一种参数。模版可以分为函数模版和类模版。


2、函数模版

函数模板的一般形式如下:

Template <class或者也可以用typename  T>

返回类型 函数名(形参表)

{//函数定义体 }

 

写法举例:

template<class T> //template是关键字,表示声明一个模版,不能省略

T Min(const T &x,const T &y)

{

    return (x<y)?x:y;

}


3、类模版

写法举例:

#include <iostream>

#include<cstdio>

#include<cstdlib>

using namespace std;

 

template<class T1,class T2> //声明模版类的关键字

class myClass

{

    T1 a;

    T2 b;

    public:

        myClass(T1 a,T2 b);

        void show();

};

//构造函数

template<class T1,class T2> //模版函数关键字

myClass<T1,T2>::myClass(T1 i,T2 j)

{

    a=i;

    b=j;

}

//成员函数

template<class T1,class T2> //模版函数关键字

void myClass<T1,T2>::show()

{

    cout<<"--------------------\n";

    cout<<"a=="<<a<<endl;

    cout<<"b=="<<b<<endl;

}

int main()

{

    myClass<int,int> c1(1,2);

    c1.show();

    myClass<int,char> c2(1,'d');

    c2.show();

    return 0;

}


4、模版类型

有时候模版类型可能是容器,这个时候应该怎么实现函数模版呢?

具体实现:(程序运行环境为vs2010

#include <iostream>

#include <vector>

#include<list>

#include <string>

#include <iterator>

using namespace std;

template <typename T>

void display(const T & t)

{

    T::const_iterator it;

    for (it = t.begin(); it != t.end(); ++it)

        cout << *it << " ";

    cout << endl;

}

 

int main()

{

vector<int> vec;

vec.push_back(1);

vec.push_back(2);

display(vec);

list<int> l;

l.push_back(33);

l.push_back(44);

display(l);

    return 0;

}


通过这个例子可以看出,迭代器是支持模版的。

5、总结

C++中,泛型编程是很重要的一门技术,能大大提高代码的重用性,尤其是在大的工程中,使用模版更加能提高代码的简洁性以及开发的高效。

既然使用了模版,那么在传参数的时候就尽量使用传引用,这样的话不仅仅能传递常规的数据类型,而且还能传递自定义的一些复杂的数据类型。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值