C++模板template
标签:span 就是 end double www. col 注意 efi space
模板定义:模板就是实现代码重用机制的一种工具,它可以实现类型参数化,即把类型定义为参数, 从而实现了真正的代码可重用性。模版可以分为两类,一个是函数模版,另外一个是类模版。
1、模板函数
1 #include 2 using namespce std;
3
4 //声明一个函数模版,用来比较输入的两个相同数据类型的参数的大小
5 //class也可以被typename代替,T可以被任何字母或者数字代替。
6 template class T>
7 T min(T x,T y)
8 {
9 return(xx:y;
10 }
11
12 void main()
13 {
14 int n1=2,n2=10;
15 double d1=1.5,d2=5.6;
16 cout"较小整数:"endl;
17 cout"较小实数:"endl;
18 system("PAUSE");
19 }
2、模板类
1 // ClassTemplate.h
2 #ifndef ClassTemplate_HH
3 #define ClassTemplate_HH
4
5 template 6 class myClass
7 {
8 private:
9 T1 I;
10 T2 J;
11 public:
12 myClass(T1 a, T2 b);//Constructor
13 void show();
14 };
15
16 //注意,函数定义也是在.h文件中。
17 template 18 myClass::myClass(T1 a,T2 b):I(a),J(b)
19 {
20 }
21
22 template 23 void myClass::show()
24 {
25 cout"I="", J="endl;
26 }
27
28 #endif
29
30 // main.cpp
31 #include 32 #include "ClassTemplate.h"
33 using namespace std;
34 void main()
35 {
36 myClassint,int> class1(3,5);
37 class1.show();
38 myClassint,char> class2(3,‘a‘);
39 class2.show();
40 system("PAUSE");
41 }
3、模板类型的参数
1)一般来说,非类型模板参数可以是常整数(包括枚举)或者指向外部链接对象的指针。
那么就是说,浮点数是不行的,指向内部链接对象的指针是不行的。
2)模板类型是一个容器或类
1 template 2 void print(T v)
3 {
4 T::iterator itor;
5 for (itor = v.begin(); itor != v.end(); ++itor)
6 {
7 cout " ";
8 }
9 cout endl;
10 }
11
12 void main(int argc, char **argv)
13 {
14 listint> l;
15 l.push_back(1);
16 l.push_front(2);
17 if(!l.empty())
18 print(l);
19 vectorint> vec;
20 vec.push_back(1);
21 vec.push_back(6);
22 if(!vec.empty())
23 print(vec);
24 }
附:参考http://www.cnblogs.com/gaojun/archive/2010/09/10/1823354.html
C++模板template
标签:span 就是 end double www. col 注意 efi space
原文地址:https://www.cnblogs.com/wangbin-heng/p/9545333.html
评论