1、函数模板
template<typename T>
T Add(T a,T b)
{
return a + b;
}
隐式调用 Add(5,6);
显示调用 Add<int>(5,6);
模板之间可以构成重载,模板与普通函数之间也可构成重载,调用顺序如下:跟某一普通的参数完全匹配,调用之,跟函数模板的参数可以完全匹配(隐式调用),调用之,跟函数模按参数不能完全匹配(隐式调用),但可以隐式转换,调用之。
2、类模板
template<typename T,int nSize>class CStack // 静态数组栈的实现
{
private:
T capacity[nSize]; //nSize 视为常量
int nLen;
public:
CStack()
{
nLen = 0;
}
bool isEmpty;
bool isFull();
bool Push(const T& e);
bool Pop(T&);
int& GetPos();
};