
//函数模板的使用
#include <iostream>
using namespace std;
template<class T> //声明模板,用关键字 “template”,其中 T 为类型参数
//template<typename T> //此句跟上句完全等同
T max( T a,T b,T c) //定义一个通用函数,用 T 作虚拟的类型名
{
if( b > a) a = b;
if( c > a) a = c;
return a; //返回最大值
}
int main( )
{
int m1 = 20,m2 = 21,m3 = 25,m;
double n1 = 12.81,n2 = 15.56,n3 =16.79,n;
long g1 = 67854,g2 = -912456,g3 = 673459,g;
m = max( m1,m2,m3); //调用模板函数,此时 T 被 int 取代,函数返回的值被赋给 m
n = max( n1,n2,n3); //调用模板函数,此时 T 被 double 取代,函数返回的值被赋给 n
g = max( g1,g2,g3);
cout << "m_max = " << m << endl;
cout << "n_max = " << n << endl;
cout << "g_max = " << g << endl;
system("pause");
return 0;
}/*
用函数模板比函数重载更方便,程序更简洁。但应注意它只适用于函数体相同、函数的参数个数相同而类型不同的情况。
定义函数模板的一般形式为: template< typename T> 或 template< class T>
*/
#include <iostream>
using namespace std;
template<class T> //声明模板,用关键字 “template”,其中 T 为类型参数
//template<typename T> //此句跟上句完全等同
T max( T a,T b,T c) //定义一个通用函数,用 T 作虚拟的类型名
{
if( b > a) a = b;
if( c > a) a = c;
return a; //返回最大值
}
int main( )
{
int m1 = 20,m2 = 21,m3 = 25,m;
double n1 = 12.81,n2 = 15.56,n3 =16.79,n;
long g1 = 67854,g2 = -912456,g3 = 673459,g;
m = max( m1,m2,m3); //调用模板函数,此时 T 被 int 取代,函数返回的值被赋给 m
n = max( n1,n2,n3); //调用模板函数,此时 T 被 double 取代,函数返回的值被赋给 n
g = max( g1,g2,g3);
cout << "m_max = " << m << endl;
cout << "n_max = " << n << endl;
cout << "g_max = " << g << endl;
system("pause");
return 0;
}/*
用函数模板比函数重载更方便,程序更简洁。但应注意它只适用于函数体相同、函数的参数个数相同而类型不同的情况。
定义函数模板的一般形式为: template< typename T> 或 template< class T>
*/