模板是实现代码重用机制的一种工具,实质就是实现类型参数化,即把类型定义为参数。
C++提供两种模板:函数模板,类模板。
函数模板
#include "stdafx.h"
#include <iostream>
using namespace std;
template<typename T> // 或者 template<class T>
T my_max(T a, T b)
{
return a>b ? a : b;
}
int main()
{
int nresult = my_max(10, 25);
char nresult2 = my_max('a', 'b');
cout << "nresult=" << nresult << "\nnresult2=" << nresult2 << endl;
return 0;
}
类模板
#include "stdafx.h"
#include <iostream>
using namespace std;
template<typename T> // 或者 template<class T>
class CMax
{
public:
CMax(T a, T b)
{
m_a = a;
m_b = b;
}
T GetMax()
{
return m_a > m_b ? m_a : m_b;
}
private:
T m_a;
T m_b;
};
int main()
{
CMax<int> myMax(10,25);
int nresult = myMax.GetMax();
CMax<char> myMax2('a', 'b');
char nresult2 = myMax2.GetMax();
cout << "nresult=" << nresult << "\nnresult2=" << nresult2 << endl;
return 0;
}