#include <iostream>
using namespace std;
class date
{
int day,year,month;
int add,subt;
public:
date ()
{
day = 17;
year = 2019;
month = 3;
add = 0;
subt = 0;
}
void recent_date ()
{
cout<<"Recent date : "<<day<<"/"<<month<<"/"<<year;
}
void adding ()
{
cout<<endl<<"How many days you want to go in a future : ";
cin>>add;
}
date operator+()
{
date temp;
temp = (day,month,year);
day += temp.add;
if (day > 31 && month == 1 || month == 3 || month == 5 || month == 7 || month == 8 ||month == 10 || month == 12)
{
temp.month++;
day = temp.day - 31;
year = temp.year;
}
return temp;
}
};
main ()
{
date obj;
obj.recent_date();
obj.adding();
obj=temp++;
obj.recent_date();
}
我收到语法错误,程序没有运行。
我想通过接受用户输入来增加日期。 但是,它无法正常运行。
有人可以帮我解释一下此代码吗?
答案 0 :(得分:0)
有关重载增量运算符的更多信息,请参见this page。
简而言之,这四个运算符是不同的:
operator+(T) // addition
operator+() // unary plus
operator++() // prefix increment (++x)
operator++(int) // postfix increment (x++)
您似乎想重载的是后缀增量。
感谢@BenVoigt指出我跳过了一元加号。
答案 1 :(得分:0)
您打电话给temp++
,但从未定义过执行该操作的人。
这使用后缀增量,它可能看起来像这样:
date operator++(int)
{
// ...
}
我的假设是您打算这样做,而不是date operator+()
。
按照mhhollomon的回答,您可能也希望使其他一些运算符重载,以获得可靠的接口。