1、模板格式:不同于普通函数的是,模板函数需要加一个头:template<class ....>
template <class T1, class T2> //模板函数声明
void change(T1& t1, T2& t2);
template <typename T1, typename T2> //另一种形式的模板函数声明
void change(T1& t1, T2& t2);
int mian()
{
...
}
template<class T1, class T2> //模板函数定义
void change(T1& t1, T2& t2)
{
...
}
2、首先我们要树立一个概念:模板实例化后是对象,对象是类的实例化;模板具体化后仍是模板。
先来总览一下模板实例化和模板具体化的种类。实例化分为隐式实例化和显示实例化两种,具体化只有显式具体化一种,格式如下:
template<typename T1, typename T2> //模板函数定义
void change(T1& t1, T2& t2)
{
....
}
template <> void change(int& t1, char& t2); //显式具体化模板
template<typename T1> void change(T1& t1, char& t2) //部分显式具体化模板
int main()
{
template void change(long& t1, double& t2); //显式实例化对象
long a; double b;
change(a, b);
int a, b;