模板是实现代码重用机制的一种工具,实质就是实现类型参数化,即把类型定义为参数。
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;
}