请看看这道C++程序

来源:百度知道 编辑:UC知道 时间:2024/07/08 03:40:17
#include <iostream.h>
class date
{
public:
date(int y=2000,int m=1,int d=1):year(y),month(m),day(d){}
int days(int m);
bool flag(int y)
{if(year%400==0||(year%4==0&&year%100!=0))
return true;
else return false;
}
date operator+(int num)
{int j=year;
int i=month;
day=num+day;
while(day>days(i))
{
day=day-days(i);
i++;
if(i==13)
{i=1;
j++;}
}
date a;
a.year=j;
a.month=i;
a.day=day;
return a;
}

date operator-(int num)
{int j=year;
int i=month;
if(day<=num&&num<days(i))
{i--;
day=day+days(i)-num;
}
else if(day>num)
day=day-num;
date a;
a.year=j;
a.month=i;
a.day=day;
return a;
}
void show()
{cout<<year<<"."<<month<<"."<<day<<endl;}
p

请注意运算符重载函数最后返回的对象,已经不是原来的对象了,而是临时构造的另外一个对象:
date a;
a.year = j;
a.month = i;
a.day = day;
return a;
(此a非彼A)
因此,对show函数的调用,应该做如下修改:
cin>>num1;
A.operator +(num1);
A.show();
改为:
cin >> num1;
(A+(num1)).show();
另外一个也是一样。

都喜欢0分问问题 。