函數模板應用樣本
//test.h
template <typename M,typename N>
M add(M a,N b)
{
return a+b;
}
//test.cpp
#include <iostream>
#include "test.h"
using namespace std;
void main()
{
int a=15;
float d=-2.8f;
double b=12.5;
char c='a';
cout<<add(a,a)<<"/n";
cout<<add(d,a)<<"/n";
cout<<add(b,a)<<"/n";
cout<<add(b,d)<<"/n";
cout<<add(b,b)<<"/n";
cout<<add(c,a)<<"/n";
}
運行結果
類模板應用樣本
//test.h
template <typename AType>
class array
{
public:
array(int size);
~array()
{
delete[]a;
}
AType&operator[](int i);
private:
int length;
AType*a;
};
template<typename AType>
array<AType>::array(int size)
{
register int i;
length=size;
a=new AType[size];
if (!a)
{
cout<<"can't allocate array./n";
exit(1);
}
for (i=0;i<size;i++)
{
a[i]=0;
}
}
template<typename AType>
AType &array<AType>::operator[](int i)
{
if (i<0||i>length-1)
{
cout<<"/nIndex value of";
cout<<i<<"is out-of-bounds./n";
exit(2);
}
return a[i];
}
//test.cpp
#include <iostream>
#include "test.h"
using namespace std;
void main()
{
array<int>intob(10);
array<double>doubleob(10);
cout<<"Interger array:";
for (int i=0;i<10;i++)
{
intob[i]=i+1;
}
for (int i=0;i<10;i++)
{
cout<<intob[i]<<" ";
}
cout<<endl;
cout<<"Double array:";
cout.precision(4);
for (int i=0;i<5;i++)
{
doubleob[i]=(double)(i+1)*3.14;
}
for (int i=0;i<5;i++)
{
cout<<doubleob[i]<<" ";
}
cout<<endl;
intob[20]=30;
doubleob[20]=89.5;
}
運行結果