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

时间:2023-12-31 15:40:26

用自己的话解释清楚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