/*模块
格式:
template<class T>
返回值类型 函数名(参数形参表)
{
函数体;
}*/
//#include<iostream>
//using namespace std;
//template <class T>
//T GetMax(T a, T b)
//{
// T result;
// result = (a > b ? a : b);
// return result;
//}
//int main()
//{
// int i = 5, j = 6, k;
// long l = 10, m = 5, n;
// k = GetMax<int>(i, j);
// n = GetMax<long>(l, m);//显式实例化
// cout << k << endl;
// cout << n << endl;
// cout << GetMax(i, j)<<endl;//隐式实例化
// cout << GetMax(l, m) << endl;
// return 0;
//}
//#include<iostream>
//#include<cstring>
//#pragma warning(disable:4996)
//using namespace std;
//template<class T>
//T sum(T* array, int size = 0)
//{
// T total = 0;
// for (int i = 0; i < size; i++)
// {
// total += array[i];
// }
// return total;
//}
//template<class T1,class T2>
//T2 sum(T1* Array, T2* array,int size=0)
//{
// T2 total=0;
// for (int i = 0; i < size;i++)
// {
// total += Array[i] + array[i];
// }
// return total;
//}
//char sum(char* s1, char* s2)
//{
//
// char str = new char[strlen(s1) + strlen(s2)];
// strcpy(str, s1);
// return strcat(str, s2);
//
//}
//void main()
//{
// int iArr[] = { 1,2,3,4,5 };
// double dArr[] = { 1.1,2.2,3.3,4.4,5.5 };
// char p1[] = "uhins";
// char p2[] = "ohisvj";
// cout<<sum(p1, p2) << endl;
// cout << sum(iArr, dArr, 5)<<endl;
// cout << sum(iArr, 5) << endl;;
// cout << sum(dArr, 5)<<endl;
//}
//类模板定义
//#include<iostream>
//using namespace std;
//template <class T>
//class Test
//{
// T a;
// int b;
//public:
// Test():b(0){}
// Test(T x,int y):a(x),b(y){}//也可放在类外
// int Getb()
// {
// return b;
// }
// void Print()
// {
// cout << a << b << endl;
// }
//};
////template<class T>
////Test<T>::Test(T x,int y):a(x),b(y){}
//int main()
//{
//
// Test<int> b(2,3);
// b.Print();
// return 0;
//}
//#include<iostream>
//using namespace std;
//template<class T>
//class mypair
//{
// T a, b;
//public:
// mypair(T first, T second)
// {
// a = first;
// b = second;
// }
// T getmax();
//};
//template <class T>
//T mypair<T>::getmax()
//{
// T r;
// r = a > b ? a : b;
// return r;
//}
//int main()
//{
// mypair<int>myobject(100, 75);
// cout << myobject.getmax();
// return 0;
//}
//#include <iostream>
//using namespace std;
//template <class T>
//class Test
//{
// T a;
// int b;
//public:
// Test() : b(0) {}
// Test(T x, int y) : a(x), b(y) {}
// int Getb() { return b; }
// void Print() { cout << a << b << endl; }
//};
//int main()
//{
// Test<char>obj2('A', 2);
// Test<int> obj1(10, 1);
// obj1.Print();
// obj2.Print();
// return 0;
//}