模板是C++中功能最为强大的软复用的一种方式,通过函数模板和类模板,我们只需要写一段特定的模板代码,即可以实现不同类型相应功能函数或类的一整套实现。不需要针对不同类型编写多个函数重载(这里就极大的减少了相应代码的编写)。当编译器遇到处理不同的类型时,会调用相应的函数模板来特化自动相应类型的目标代码(也就是说编译器帮我们完成了不同类型的函数重载编写工作).
函数模板的定义:
所有函数模板的定义都由关键字 template开始,后面跟着<typename T>模板形参列表。模板型参列表中则是具体的模板型参(T)。T就代表了所有基本类型和自定义类型。模板型参T之前一定要加上相应的关键字typename或class来指出相应的模板型参。
例:模板函数测试
#include <iostream>
#include <iomanip>//设置相应的流格式
using namespace std;template <typename T>
void print(const T * const ptr,int count){//接收二个常量
for(int i = 0; i < count; i++ )
cout<<"ptr["<<i<<"]="<<ptr[i]<<" ";;//打印相应的数组元素
cout<<endl;//换行
}int main(){
const int acount = 5;
const int bcount = 6;
const int ccount = 6;int a[acount] = {1,2,3,4,5};
double b[bcount] = {1.1,2.2,3.3,4.4,5.5,6.6};
char c[ccount] = "hello";//初始化相应的字符数组
cout<<"first:"<<endl;
print(a,acount);
cout<<endl;
cout<<"second :"<<endl;
print(b,bcount);
cout<<endl;
cout<<"third :"<<endl;
print(c,ccount);
}