函数模板
#include <iostream>
#include <process.h>
using namespace std;
//template< class T > // 模版类型关键字class在新C++标准中建议使用typename代替.
template< typename T >
T TestMax(T a,T b)
{
if (a > b)
return a;
else
return b;
}
template< typename T >
T TestMin(T a,T b)
{
if (a < b)
return a;
else
return b;
}
int main()
{
int iMax = TestMax< int >( 1,23 );
cout<< "iMax=" << iMax << endl;
float fMax = TestMax< float >( 8.0f,5.0f );
cout<< "fMax=" << fMax << endl;
int iMin = TestMin< int >( 1,23 );
cout<< "iMin=" << iMin << endl;
float fMin = TestMin< float >( 8.0f,5.0f );
cout<< "fMin=" << fMin << endl;
system("pause");
return 0;
}
---------------------------------------------------------------
输出:
iMax=23
fMax=8
iMin=1
fMin=5
----------------------------------------------------------------
模板 类
#include <process.h>
#include <iostream>
using namespace std;
template< typename T, int nMax = 5 >
class CTestVector
{
public:
CTestVector(T vector)
{
for (int i = 0; i < nMax; i++)
{
m_vec[i] = vector;
}
}
void print(void)
{
for (int i = 0; i < nMax; i++)
{
cout<< m_vec[i] << endl;
}
}
private:
T m_vec[nMax];
};
int main()
{
//int实例,使用缺省参数
CTestVector<int> testInt(10);
testInt.print();
//float实例
CTestVector<float,3> testFloat( 3.14159f );
testFloat.print();
//double实例
double dA = 1.55233f;
CTestVector<double,6> testDouble(dA);
testDouble.print();
system("pause");
return 0;
}
---------------------------------------------------------------
输出:
10
10
10
10
10
3.14159
3.14159
3.14159
1.55233
1.55233
1.55233
1.55233
1.55233
1.55233
----------------------------------------------------------------