关于函数模板的问题

来源:百度知道 编辑:UC知道 时间:2024/05/16 20:12:09
#include<iostream>
using namespace std;
template<class T>
void outputArray(const T *P_array,const int count)//划线的地方小弟不太明白。这里定义的是个指针吗?
{
for(int i=0;i<count;i++)
cout<<P_array[i]<<" ";//这个地方P-array[i]怎么是一个数组了呢?
cout<<endl;
}
int main()
{
const int aCount=8,bCount=8,cCount=50;
int aArray[aCount]={1,2,3,4,5,6,7,8};
double bArray[bCount]={1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8};
char cArray[cCount]="welmcome to see you!";
cout<<"a Array contains:"<<endl;
outputArray(aArray,aCount);
cout<<"b Array contains:"<<endl;
outputArray(bArray,bCount);
cout<<"c Array contains:"<<endl;
outputArray(cArray,bCount);
}

小弟在模板这个地方有很多弄不懂的地方,请前辈们给个比较系统的讲解好吗写了。

这个和模板没有关系,指针和数组有很大的联系,上面的用法就是这样,可以把指针当成数组来用,P_array[i]就等于*(P_array+i)。
另外模板这个东东是为了定义对多种类型都适用的函数而引入的。这个例子里的那个outputArray函数如果不用模板,就要定义三个重载函数,分别用于int,double和char,这很麻烦。用了模板,就在模板里定义一个T类型,这个T类型就是通用的,int,double和char都可以用。
具体格式就是上面那样。