c++运算符重载有问题

编写这个程序中我有这几个问题,太多了我一个一个说,第一个就是我想输入两个日期,重新定义>和==表示判断日期是否相等或者谁大,还有就是我想定义=把月份变成字母最后显示的时候... 编写这个程序中我有这几个问题,太多了我一个一个说,第一个就是我想输入两个日期,重新定义> 和==表示判断日期是否相等或者谁大,还有就是我想定义=把月份变成字母最后显示的时候(这部分我不会写),在我定义好这些后在主程序里我想输入日期然后对比时发现我不知道改怎么运用重载符号了,最后输出的结果是字母的月份加数字的日子,这个程序是我的思路 很多错误,求改正和编写。拜托了。
#include<iostream>
using namespace std;
class Date
{
public:
Date()
{ month=01;day=01;}
Date(int m,int d)
{ month=m;day=d;}
void setDate(int m,int d);
void Display();
private:
int month;
int day;
};
void Date::setDate(int m,int d)
{
month=m;
day=d;
}
Date Date::operator==()
{
int m1,m2,d1,d2;
if(m1==m2&&d1=d2)
cout<<"The two date is same"<<endl;
else
return*this;
}
Date Date::operator>()
{
int m1,m2,d1,d2;
if(m1>m2)
cout<<"The first input date is bigger than later"<<endl;
else if(m1==m2)
{
if(d1>d2)
cout<<"The first date is bigger than later"<<endl;
else
cout<<"The first date is smaller than later"<<endl;
}
else
cout<<"The first date is smaller than later"<<endl;
return*this;
}
Date Date::operator=()
{ switch(month)
{
case 1: cout<<"Jan";break;
case 2: cout<<"Feb";break;
case 3: cout<<"Mar";break;
case 4: cout<<"Apr";break;
case 5: cout<<"May";break;
case 6: cout<<"Jun";break;
case 7: cout<<"Jul";break;
case 8: cout<<"Aug";break;
case 9: cout<<"Sep";break;
case 10: cout<<"Oct";break;
case 11: cout<<"Nov";break;
case 12: cout<<"Dec";break;
}
}
void Date::Display()
{
cout<<"The Date is"<<month<<" "<<day<<endl;
}
int main()
{
int m1,m2,d1,d2;
cout<<"input the first Date"<<endl;
cin>>m1>>b1;
cout<<"input the second Date"<<endl;
cin>>m2>>b1;
if()
展开
 我来答
sky28_sky28
推荐于2016-05-17 · TA获得超过404个赞
知道小有建树答主
回答量:299
采纳率:0%
帮助的人:240万
展开全部
。。。看来是初学者。。。
有几点建议:
1. 把=重载成显示信息很不合理,毕竟=通常是用来赋值的。建议输出信息可以用成员函数代替。或者重载<<也可以。
2. 既然重载了>,那么<也有必要重载下。
3. 对于< == 等这类双目运算符重载的时候,如果定义为成员函数,通常是函数的都有一个此类型的形参的引用。
4. 重载运算符的话,你最起码要在类里面声明下吧。
#include<iostream>
using namespace std;
class Date
{
public:
Date(){ month=01;day=01;}
Date(int m,int d){ month=m;day=d;}
void setDate(int m,int d);
void Display();
bool operator==(const Date &MyDate);
void operator>(const Date &MyDate);
private:
int month;
int day;
};
void Date::setDate(int m,int d)
{
month=m;
day=d;
}
bool Date::operator==(const Date &MyDate)
{
if(month == MyDate.month && day == MyDate.day)
return true;
else return false;
}
void Date::operator>(const Date &MyDate)
{
if(month > MyDate.month)
cout<<"The first input date is bigger than later"<<endl;
else if(month == MyDate.month)
{
if(day > MyDate.day)
cout<<"The first date is bigger than later"<<endl;
else
cout<<"The first date is smaller than later"<<endl;
}
else
cout<<"The first date is smaller than later"<<endl;
}
void Date::Display()
{
cout<<"The Date is"<<month<<" "<<day<<endl;
}
int main()
{
return 0;
}
//否决了你重载=的想法,自己定义个函数输出吧。
//重载==没什么好说的,返回值bool型的。至于>的重载,其实是不太好重载的,毕竟Date有两个参数,理论上来说返回值最好也设置成为bool型的,这样比较合理。至于什么时候返回false,什么时候返回true,你自己修改下吧。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式