用c++实现一个日期类
时间: 2024-05-13 20:18:33 浏览: 14
以下是一个简单的日期类的 C++ 实现:
```cpp
#include <iostream>
using namespace std;
class Date {
private:
int day, month, year;
public:
Date(int d, int m, int y) {
day = d;
month = m;
year = y;
}
void displayDate() {
cout << day << "/" << month << "/" << year << endl;
}
};
int main() {
Date today(22, 9, 2021);
today.displayDate();
return 0;
}
```
这里的日期类包含三个私有变量 `day`、`month` 和 `year`,以及一个公有的构造函数 `Date()` 和一个公有的显示日期的成员函数 `displayDate()`。在 `main()` 函数中,我们创建了一个 `Date` 对象 `today`,并调用了 `displayDate()` 方法来显示日期。
相关问题
用c++实现一个日期类完成两个日期相减的功能
下面是一个用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`,并计算它们之间的天数差,最后输出结果。
用c++实现一个日期类用两种方法完成两个日期相减的功能
下面是用 C++ 实现一个日期类,并且实现了两种方法完成两个日期相减的功能:
```cpp
#include <iostream>
using namespace std;
class Date {
public:
Date(int y = 0, int m = 0, int d = 0) : year(y), month(m), day(d) {}
~Date() {}
int operator-(const Date& d) const;
int daysSince0000() const;
private:
int year, month, day;
};
int Date::operator-(const Date& d) const {
return daysSince0000() - d.daysSince0000();
}
int Date::daysSince0000() const {
int days = 0;
for (int i = 1; i < year; i++) {
if ((i % 4 == 0 && i % 100 != 0) || i % 400 == 0) { // leap year
days += 366;
} else {
days += 365;
}
}
int monthDays[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) { // leap year
monthDays[1] = 29;
}
for (int i = 0; i < month - 1; i++) {
days += monthDays[i];
}
days += day - 1;
return days;
}
int main() {
Date d1(2022, 1, 1);
Date d2(2021, 12, 31);
cout << "Method 1: " << d1.daysSince0000() - d2.daysSince0000() << endl;
cout << "Method 2: " << d1 - d2 << endl;
return 0;
}
```
这个日期类中,我们定义了一个构造函数和一个析构函数,以及两个私有成员变量 year、month 和 day。我们还定义了 `operator-` 函数和 `daysSince0000` 函数,分别用来实现两种方法完成两个日期相减的功能。
在 `daysSince0000` 函数中,我们首先计算出自 0000 年到当前年份所经过的天数,然后再根据月份和日期计算出当前日期到年初的天数,最后将这两个天数相加得到自 0000 年到当前日期所经过的天数。
在 `operator-` 函数中,我们只需要调用 `daysSince0000` 函数计算出两个日期距离 0000 年的天数,然后将它们相减即可。
在 main 函数中,我们创建了两个日期对象 d1 和 d2,并且分别使用两种方法计算它们的差值,然后输出结果。