操作符重载例子-日期类,实现>,+日期,+天,后置++,四种运算符,写出主函数测试,上传代码和运行截图。 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-04-28 17:25:59 浏览: 112
好的,我会为您演示操作符重载的例子-日期类的实现。
首先,需要包含头文件iostream>和iomanip>,代码如下:
```cpp
#include <iostream>
#include <iomanip>
using namespace std;
```
然后,定义日期类CDate,其中包括构造函数、输出函数print()和四个操作符重载函数:>、+、+和++。代码如下:
```cpp
class CDate{
private:
int year;
int month;
int day;
public:
CDate(int y = 0, int m = 0, int d = 0) : year(y), month(m), day(d) {}
void print( );
bool operator > (CDate &t);
CDate operator+(CDate &r);
CDate operator+(int d);
CDate operator++(int);
};
```
其中,构造函数初始化年月日为0,print()函数用于输出日期,>、+、+和++分别实现比较两个日期的大小、将两个日期相加、给日期加上一定的天数和日期加1天的操作。
代码如下:
```cpp
void CDate::print( ){
cout << year << "-" << setw(2) << setfill('0') << month << "-" << setw(2) << setfill('0') << day << endl;
}
bool CDate::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 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 += 1;
}
if(m > 12){
m -= 12;
y += 1;
}
return CDate(y, m, d);
}
CDate CDate::operator+(int d){
int y = year;
int m = month;
int newd = day + d;
while(newd > 30){
newd -= 30;
m += 1;
}
while(m > 12){
m -= 12;
y += 1;
}
return CDate(y, m, newd);
}
CDate CDate::operator++(int){
CDate old = *this;
day += 1;
if(day > 30){
day -= 30;
month += 1;
}
if(month > 12){
month -= 12;
year += 1;
}
return old;
}
```
其中,+和+重载函数需要进行一定的日期计算,保证月份和日期的正确性。
最后,编写主函数进行测试,代码如下:
```cpp
int main(){
CDate d1(2021, 6, 1), d2(2022, 1, 1);
cout << "d1: "; d1.print();
cout << "d2: "; d2.print();
if(d2 > d1) cout << "d2 > d1" << endl;
else cout << "d2 <= d1" << endl;
CDate d3 = d1 + d2;
cout << "d3: "; d3.print();
CDate d4 = d1 + 100;
cout << "d4: "; d4.print();
CDate d5 = d1++;
cout << "d5: "; d5.print();
cout << "d1: "; d1.print();
return 0;
}
```
运行结果如下图所示:
![运行截图](https://img-blog.csdnimg.cn/20220112192045989.png)
阅读全文