考试首页 | 考试用书 | 培训课程 | 模拟考场 | 考试论坛  
全国  |             |          |          |          |          |         
  当前位置:计算机等级 > 二级考试 > C++语言程序设计 > C++辅导 > 文章内容
  

计算机等级考试二级C++语言程序设计辅导笔记:重载双目运算符

中华IT学院   【 】  [ 2017年5月22日 ]

  三。重载关系运算符

  如果想要对两个日期进行比较,比如出现下面这样的代码:

  if(olddate 可以向上面用类似的方法重载关系运算符

  #include iostream.h

  class Date

  {

  int mo,da,yr;

  public:

  Date(int m=0,int d=0,int y=0)

  { mo=m; da=d; yr=y;}

  void display() const

  { cout< int operator == (Date& dt) const;

  int operator < (Date& dt) const;

  };

  int Date::operator== (Date& dt) const

  {

  return (this->mo==dt.mo && this->da==dt.da && this->yr==dt.yr);

  }

  int Date::operator < (Date& dt) const

  {

  if(this->yr == dt.yr)

  {

  if(this->mo == dt.mo) return this->da < dt.da;

  return this->mo < dt.mo;

  }

  return this->yr < dt.yr;

  }

  int main()

  {

  Date date1(2,14,2005);

  Date date2(6,9,2005);

  Date date3(2,14,2005);

  if(date1 {

  date1.display();

  cout< date2.display();

  }

  cout< if(date1==date3)

  {

  date1.display();

  cout< date3.display();

  }

  return 0;

  }

  可以类似的重载其他关系运算符,如!=

  int operator != (Date& dt) { return !(*this==dt);}

  四。其他赋值运算符

  #include iostream.h

  class Date

  {

  int mo,da,yr;

  static int dys[];

  public:

  Date(int m=0,int d=0,int y=0)

  { mo=m; da=d; yr=y;}

  void display() const

  { cout< Date operator + (int) const;

  Date operator +=(int)

  { *this=*this+n; return *this;}

  };

  int Date::dys[]={31,28,31,30,31,30,31,31,30,31,30,31};

  Date Date::operator+(int) const

  {

  Date dt=*this;

  n+=dt.da;

  while(n>=dys[dt.mo-1])

  {

  n-=dys[dt.mo-1];

  if(++dt.da==13)

  {

  dt.mo=1;

  dt,yr++;

  }

  }

  dt.da=n;

  return dt;

  }

  int main()

  {

  Date olddate(1,1,2005);

  olddate+=100;

  olddate.display();

  return 0;

  }

首页 1 2 尾页
分享到:
本文纠错】【告诉好友】【打印此文】【返回顶部
将考试网添加到收藏夹 | 每次上网自动访问考试网 | 复制本页地址,传给QQ/MSN上的好友 | 申请链接 | 意见留言 TOP
关于本站  网站声明  广告服务  联系方式  站内导航  考试论坛
Copyright © 2007-2013 中华考试网(Examw.com) All Rights Reserved