初话C++模板【用自己的话,解释清楚这些】

 

用自己的话解释清楚C++的模板编程

模板编程是为了解决什么问题而出现的?

提高代码的重用性,提高代码的利用率。

泛型编程的一种实现。

模板的精神是: 

类型参数化。

模板的实现

模板分为:函数模板、类模板

 

函数模板

 

定义函数模板的一般形式为:
template < typename T>
通用函数定义 通用函数定义

template <class T>
通用函数定义 通用函数定义

 

对于多个类型可采用如下:template <class T1, typename T2>

 

参考使用代码如下:

  1 #include <iostream>

  2 

  3 using namespace std;

  4 template <typename T>    //模板声明,其中T为类型参数

  5 inline T max(T a,T b,T c) //定义一个通用函数,用T作虚拟的类型名

  6 {

  7         if(b>a) a=b;

  8         if(c>a) a=c;

  9         return a;

 10 }

 11 

 12 

 13 int main()

 14 {

 15         int i1=18,i2=19,i3=20;

 16         int  i;

 17 

 18         double d1=1.23,d2=2.34,d3=3.56;

 19         double d;

 20 

 21 

 22         i=max(i1,i2,i3);

 23         d=max(d1,d2,d3);

 24         cout<<"i_max="<<i<<endl;

 25         cout<<"d_max="<<d<<endl;

 26         return  0;

 27 }

 28 

类模板

类模板的定义也与函数模板类似:

参考代码如下:

  1 #include <iostream>

  2 

  3 using namespace std;

  4 template <typename T>

  5 

  6 class Compare

  7 {

  8         public:

  9         Compare(T a,T b)

 10         {

 11                 x=a;

 12                 y=b;

 13         }

 14         T max()

 15         {

 16                 return (x>y)?x:y;

 17         }

 18 

 19 private:

 20         T x,y;

 21 };

 22 

 23 

 24 

 25 int main()

 26 {

 27         Compare<int> c(3,7);

 28 

 29 

 30         cout<<c.max()<<" is the max of two num"<<endl;

 31         return  0;

 32 }

 33

参考工程下载,http://pan.baidu.com/s/1mgKBUoK

http://pan.baidu.com/s/1pJO96Q3 

http://pan.baidu.com/s/1kT0vioJ

QQ群 计算机科学与艺术  272583193

加群链接:http://jq.qq.com/?_wv=1027&k=Q9OxMv

posted @ 2014-07-14 18:43  夏大王  阅读(449)  评论(0编辑  收藏  举报