-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmy_template_test.cpp
157 lines (141 loc) · 3.1 KB
/
my_template_test.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
/********************************************
* 模板
* *****************************************/
//模板是范型编程的基础,范型编程就是编写与类型无关的逻辑代码,
//是一种复用的方式,模板可以分为模板类和模板函数
//#include<iostream>
//#include<string>
//using namespace std;
//
////使用继承来实现模板
//bool Iseqal(int left,int right){
// return left==right;
//}
//bool Iseqal(string& left,string& right){
// return left==right;
//}
//void Test(){
// string s1("s1"),s2("s2");
// cout<<Iseqal(s1,s2)<<endl;
// cout<<Iseqal(1,1)<<endl;
// return;
//}
//int main(){
// Test();
//}
//#include<iostream>
//#include<string>
//using namespace std;
//
//template<typename T>
//
//bool Iseqal(const T& left,const T& right){
// return left==right;
//}
//void Test(){
// string s1("s"),s2("s");
// cout<<Iseqal(s1,s2)<<endl;
//}
//
//int main(){
// Test();
// return 0;
//}
//#include<iostream>
//using namespace std;
////模板参数匹配及显示实例化
//template<class T>
//bool Iseqal(const T& left,const T& right){
// return left == right;
//}
//void test(){
// cout<<Iseqal(1,1)<<endl;
// //cout<<Iseqal(1,1.1)<<endl; //显示类型不匹配
// cout<<Iseqal<int>(1,1.1)<<endl; //进行显示类型转换
// cout<<Iseqal<double>(1,1.1)<<endl;//进行显示的类型转换
//}
//
//int main(){
// test();
// return 0;
//}
//#include<iostream>
//using namespace std;
////重载函数模板
//bool Iseqal(const int& left,const int& right){
// cout<<"template<int,int>"<<endl;
// //return left == right;
//}
//template<class T>
//bool Iseqal(const T& left,const T& right){
// cout<<"template<T,T>"<<endl;
// //return left == right;
//}
//
//template<class T1,class T2>
//bool Iseqal(const T1& left,const T2& right){
// cout<<"template<T1,T2>"<<endl;
// //return left == right;
//}
//void test(){
// Iseqal(1,1); //调用<int,int>
// Iseqal(1.1,1); //调用<T1,T2>
// Iseqal(1.1,1.1); //调用<T,T>
//}
//int main(){
// test();
// return 0;
//}
///////////////////////////////////////////////
//模板类
//////////////////////////////////////////////
//普通类顺序表的定义
//typedef int dataType;
////typedef char dataType;
//class Seqlist{
//private:
// dataType* _data;
// int _size;
// int _capacity;
//};//类结束,必须加上分号
//
////模板类
//template<class T>
//class Seqlist{
//private:
// T* _data;
// int _size;
// int _capacity;
//};
//#include<iostream>
//using namespace std;
////模板类
//template<class T>
//class Seqlist{
//public:
// Seqlist();//构造函数
// ~Seqlist();//析垢函数
//private:
// int _size;
// int _capacity;
// T* _data;
//};
//template<class T>
////成员函数的实现
//Seqlist<T>::Seqlist()
// :_size(0)
// ,_capacity(10)
// ,_data(new T[_capacity])
//{}
//template<class T>
//Seqlist<T>::~Seqlist(){
// delete[] _data;
//}
//void test(){
// Seqlist<int> sl1; //编译器模板推演处理进行实例化
// Seqlist<double> sl2;
//}
//int main(){
// test();
// return 0;
//}