日期类输入运算符重载郭研浙江大学
时间: 2025-01-05 20:37:34 浏览: 3
在面向对象编程中,运算符重载是一个重要的概念。运算符重载允许我们重新定义运算符的行为,使其适用于自定义的类。在日期类的实现中,运算符重载可以用来简化日期的操作。
假设我们有一个日期类 `Date`,包含年、月、日三个属性。我们可以通过运算符重载来实现日期的加减运算。
以下是一个简单的日期类示例,其中实现了加法运算符 `+` 和减法运算符 `-`:
```cpp
#include <iostream>
using namespace std;
class Date {
private:
int year, month, day;
public:
Date(int y, int m, int d) : year(y), month(m), day(d) {}
// 重载加法运算符
Date operator+(int days) {
Date newDate(year, month, day);
newDate.day += days;
// 处理日期进位
while (newDate.day > 30) {
newDate.day -= 30;
newDate.month++;
if (newDate.month > 12) {
newDate.month = 1;
newDate.year++;
}
}
return newDate;
}
// 重载减法运算符
Date operator-(int days) {
Date newDate(year, month, day);
newDate.day -= days;
// 处理日期借位
while (newDate.day < 1) {
newDate.day += 30;
newDate.month--;
if (newDate.month < 1) {
newDate.month = 12;
newDate.year--;
}
}
return newDate;
}
void print() {
cout << year << "-" << month << "-" << day << endl;
}
};
int main() {
Date today(2023, 10, 1);
Date future = today + 10;
Date past = today - 5;
today.print(); // 输出:2023-10-1
future.print(); // 输出:2023-10-11
past.print(); // 输出:2023-9-26
return 0;
}
```
在这个示例中,我们通过运算符重载实现了日期的加减运算。`operator+` 和 `operator-` 方法分别处理加法和减法操作,并处理日期的进位和借位。
阅读全文