函数模板
#include <stdio.h>
//int max(int a,int b)
//{
// return a > b ? a : b;
//}
//
//char max(char a,char b)
//{
// return a > b ? a : b;
//}
//
//float max(float a,float b)
//{
// return a > b ? a : b;
//}
template<typename T> //或者 template<class T>
T max(T a, T b)
{
return a>b? a:b;
}
void main()
{
int iMax = max(3,5); //调用int max(int a, int b);
char chMax = max('w','d'); //调用char max(char a, char b);
float fMax = max(2.7f, 1.3f); //调用float max(float a, float b);
}
类模板
#include <stdio.h>
//class CMax
//{
//private:
// int m_a;
// int m_b;
//
//public:
// CMax(int a, int b)
// {
// m_a = a;
// m_b = b;
// }
//
//public:
// int GetMax()
// {
// return m_a>m_b ? m_a : m_b;
// }
//};
template<typename T> //或者template<class T>
class CMax
{
private:
T m_a;
T m_b;
public:
CMax(T a, T b)
{
m_a = a;
m_b = b;
}
public:
T GetMax()
{
return m_a>m_b ? m_a : m_b;
}
};
void main()
{
CMax<int> maxInt(3,5); //需要指定类型
int iMax = maxInt.GetMax();
CMax<char> maxChar('w', 'd');
char chMax = maxChar.GetMax();
CMax<float> maxFloat(2.7f,1.3f);
float fMax = maxFloat.GetMax();
}
****************************************
可以定义多种类型的形参。
template<typename T1, typename T2>
class CTest
{...};
对象实例化时:
CTest testA<int, float>;
CTest testB<double, string>