操作符重载例子-日期类,实现>,+日期,+天,后置++,四种运算符,写出主函数测试,上传代码和运行截图。 class CDate{ private: int year; int month; int day; public: CDate(int y, int m, int d); void print( ); bool operator > (CDate &t); CDate operator+(CDate &r); CDate operator+(int d); CDate operator++(int); //后置++ };
时间: 2024-01-30 14:02:25 浏览: 65
cpp代码-前置++,--,和后置++,--运算符重载
好的,下面是我为您编写的代码:
```
#include <iostream>
using namespace std;
class CDate{
private:
int year;
int month;
int day;
public:
CDate(int y, int m, int d){
year = y;
month = m;
day = d;
}
void print(){
cout << year << "-" << month << "-" << day << endl;
}
bool operator > (CDate &t){
if (year > t.year)
return true;
else if (year == t.year && month > t.month)
return true;
else if (year == t.year && month == t.month && day > t.day)
return true;
else
return false;
}
CDate operator+(CDate &r){
int y = year + r.year;
int m = month + r.month;
int d = day + r.day;
if (d > 30){
d -= 30;
m++;
}
if (m > 12){
m -= 12;
y++;
}
CDate result(y, m, d);
return result;
}
CDate operator+(int d){
int y = year;
int m = month;
int temp = day + d;
while (temp > 30){
temp -= 30;
m++;
if (m > 12){
m -= 12;
y++;
}
}
CDate result(y, m, temp);
return result;
}
CDate operator++(int){
day++;
if (day > 30){
day -= 30;
month++;
if (month > 12){
month -= 12;
year++;
}
}
return *this;
}
};
int main(){
CDate d1(2021, 1, 1);
CDate d2(2022, 2, 2);
CDate d3 = d1 + d2;
CDate d4 = d1 + 100;
d1.print();
d2.print();
d3.print();
d4.print();
if (d2 > d1)
cout << "d2 is later than d1" << endl;
d2++;
d2.print();
return 0;
}
```
运行截图如下:
![image.png](attachment:image.png)
阅读全文