stl 标准模板库
模板声明 模板参数表
template<calss T>
<返回值类型> 函数名(函数形参表)
普/模 普/模
template <class T>
T max1(T a,T b)
{
return a>b?a:b;
}
函数模板并不是一个真实的函数,只是对函数的描述
编译系统不为他生成任何可执行代码。
当编译系统发现该函数调用时,会根据函数形参表判断是否匹配。
如果匹配则生成一个重载函数
define 文本替换 不做类型检查
1 模板 和 重载函数 优先调用重载函数
2 如果和模板函数相匹配,用模板函数
3 对应参数转化后, 按照1,2顺序调用
类模板
声明 template<class T>
class Stack
{
void show();
};
类外定义
template <class T>
void Stack<T>:: show()
{
}
实例化
Stack<int> Int_Stack
template <class T1,class T2>
class Test1
{
protected:
T1 a;
T2 b;
public:
Test1(T1 x,T2 y)
{
a = x;
b = y;
}
T1 Geta();
T2 Getb();
};
template <class T1,class T2>
T1 Test1<T1,T2>::Geta()
{
return a;
}
template <class T1, class T2>
T2 Test1<T1,T2>::Getb()
{
return b;
}