用c++实现一个日期类完成两个日期相减的功能
时间: 2024-05-09 19:15:00 浏览: 117
下面是一个用C++实现日期类的示例代码,包括两个日期相减的功能:
```cpp
#include <iostream>
using namespace std;
class Date {
public:
Date(int y, int m, int d) : year(y), month(m), day(d) {}
int operator-(const Date& other) const {
int days = 0;
int y = year, m = month, d = day;
while (y > other.year || (y == other.year && m > other.month) || (y == other.year && m == other.month && d > other.day)) {
days++;
d--;
if (d == 0) {
m--;
if (m == 0) {
y--;
m = 12;
}
d = daysInMonth(y, m);
}
}
return days;
}
private:
int year;
int month;
int day;
bool isLeapYear(int y) const {
return (y % 4 == 0 && y % 100 != 0) || y % 400 == 0;
}
int daysInMonth(int y, int m) const {
if (m == 2) {
return isLeapYear(y) ? 29 : 28;
} else if (m == 4 || m == 6 || m == 9 || m == 11) {
return 30;
} else {
return 31;
}
}
};
int main() {
Date d1(2021, 9, 1);
Date d2(2021, 8, 1);
int days = d1 - d2;
cout << "d1 - d2 = " << days << endl;
return 0;
}
```
在这个示例代码中,我们定义了一个日期类 `Date`,并实现了一个重载运算符 `-` 的函数,用于计算两个日期之间的天数差。在计算过程中,我们使用了一个循环来逐步减少日期,直到两个日期相等为止。我们还实现了两个辅助函数 `isLeapYear` 和 `daysInMonth`,分别用于判断某一年是否为闰年和某一月有多少天。
在 `main` 函数中,我们创建了两个日期对象 `d1` 和 `d2`,并计算它们之间的天数差,最后输出结果。
阅读全文