loading ...

2006-12-17 | 模板

分享
标签: 函数模板 
作者:廉东方 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
分享 分享 |  评论 (3) |  阅读 (?)  |  固定链接 |  发表于 21:55
搜狐博客温馨提示:警惕博客留言诈骗, 搜狐博客管理员的正确地址为http://admin.blog.sohu.com, 其他都是冒牌。搜狐博客官方不会要求参加活动的各位博友缴纳任何的手续费用。请勿轻信留言、评论中的中奖信息,更不要拨打陌生电话及向陌生帐户汇款,谨防受骗!识别更多网络骗术,请 点击查看详情
正在读取评论信息...
您还未登录,只能匿名发表评论。或者您可以 登录 后发表。
 
  一个单亲妈妈的心愿:治好7岁儿子的白血病
表  情:
加载中...
回复通知: 同时用小纸条通知对方该回复