标签:
作者:廉东方 2006/12/17
要求:
掌握函数模板的使用
模板是实现代码复用的一种手段,他实现了函数与类的参数化设计方法。
参数化设计是指将函数或类中的某些形参、变量、返回值的类型用“模板参数”替代。
从同一个函数模板实例化的模板函数都是同名的,编译系统通过重载的方法调用相应的函数。
函数模板定义:
template <class 模板参数,...>
函数类型 函数名(形参表)
{
函数体;
}
//函数模板的使用
#include <iostream.h>
#include<string.h>
class fraction
{
int n;
int d;
public:
fraction(int numerator=0,int denominator=1)
{
n=numerator;
d=denominator;
}
friend bool operator>(fraction f1,fraction f2)
{
return f1.n*f2.d>f1.d*f2.n;
}
friend ostream &operator<<(ostream &out,fraction &f)
{
out<<f.n;
if(f.d!=1)out<<"/"<<f.d;
return out;
}
};
template <class T>
T Max(T a,T b)
{
return a>b?a:b;
}
// 下面的函数须直接给出,而不能由模板产生,否则会出现错误
char *Max(char *s1,char *s2)
{
return (strcmp(s1,s2)>0)?s1:s2;
}
void main()
{
int i1=3,i2=5;
cout<<Max(i1,i2)<<endl;
char c1='a',c2='b';
cout<<Max(c1,c2)<<endl;
fraction f1(2,3),f2(3,4);
cout<<Max(f1,f2)<<endl;
char s1[]="student",s2[]="teacher";
cout<<Max(s1,s2)<<endl;
}
运行结果:
5
b
3/4
teacher
Press any key to continue
掌握函数模板的使用
模板是实现代码复用的一种手段,他实现了函数与类的参数化设计方法。
参数化设计是指将函数或类中的某些形参、变量、返回值的类型用“模板参数”替代。
从同一个函数模板实例化的模板函数都是同名的,编译系统通过重载的方法调用相应的函数。
函数模板定义:
template <class 模板参数,...>
函数类型 函数名(形参表)
{
函数体;
}
//函数模板的使用
#include <iostream.h>
#include<string.h>
class fraction
{
int n;
int d;
public:
fraction(int numerator=0,int denominator=1)
{
n=numerator;
d=denominator;
}
friend bool operator>(fraction f1,fraction f2)
{
return f1.n*f2.d>f1.d*f2.n;
}
friend ostream &operator<<(ostream &out,fraction &f)
{
out<<f.n;
if(f.d!=1)out<<"/"<<f.d;
return out;
}
};
template <class T>
T Max(T a,T b)
{
return a>b?a:b;
}
// 下面的函数须直接给出,而不能由模板产生,否则会出现错误
char *Max(char *s1,char *s2)
{
return (strcmp(s1,s2)>0)?s1:s2;
}
void main()
{
int i1=3,i2=5;
cout<<Max(i1,i2)<<endl;
char c1='a',c2='b';
cout<<Max(c1,c2)<<endl;
fraction f1(2,3),f2(3,4);
cout<<Max(f1,f2)<<endl;
char s1[]="student",s2[]="teacher";
cout<<Max(s1,s2)<<endl;
}
运行结果:
5
b
3/4
teacher
Press any key to continue






评论
想第一时间抢沙发么?