程序设计,编写一个面向对象的程序。设计和实现一个满足如下要求的CDate类: (1)设置当前日期 (2)输出当前日期,输出格式为:日/月/年; (3)输出在当前日期上加上一天后的日期。 提示:类有构造函数和析构函数;当前日期加一天函数(加一天可能影响月或者年);需要判断是否是闰年,用一个成员函数实现
时间: 2024-01-21 08:19:23 浏览: 53
面向对象程序设计C++-date类的编写
3星 · 编辑精心推荐
以下是C++语言的实现示例:
```cpp
#include <iostream>
class CDate {
public:
CDate(int day, int month, int year); // 构造函数
~CDate(); // 析构函数
void printCurrentDate(); // 输出当前日期
void printNextDay(); // 输出加上一天后的日期
private:
int m_day;
int m_month;
int m_year;
bool isLeapYear(); // 判断是否是闰年
};
CDate::CDate(int day, int month, int year)
: m_day(day), m_month(month), m_year(year) {}
CDate::~CDate() {}
void CDate::printCurrentDate() {
std::cout << m_day << "/" << m_month << "/" << m_year << std::endl;
}
bool CDate::isLeapYear() {
return (m_year % 4 == 0 && m_year % 100 != 0) || m_year % 400 == 0;
}
void CDate::printNextDay() {
int daysInMonth[] = {31, 28 + isLeapYear(), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
if (m_day < daysInMonth[m_month - 1]) {
m_day++;
} else {
m_day = 1;
if (m_month < 12) {
m_month++;
} else {
m_month = 1;
m_year++;
}
}
std::cout << "Next day: " << m_day << "/" << m_month << "/" << m_year << std::endl;
}
int main() {
CDate date(31, 12, 2021);
date.printCurrentDate();
date.printNextDay();
return 0;
}
```
在上述示例中,CDate类包含了一个构造函数和一个析构函数。构造函数用于初始化日期,析构函数则没有实际操作。
CDate类还有三个公共成员函数:printCurrentDate、printNextDay和isLeapYear。其中,printCurrentDate用于输出当前日期,printNextDay用于输出加上一天后的日期,isLeapYear用于判断当前年份是否是闰年。
在printNextDay函数中,我们使用了一个数组daysInMonth来存储每个月的天数。如果当前日期小于当月天数,则直接将天数加1;否则,将日期重置为1,并将月份加1。如果当前月份已经是12月,则将月份重置为1,并将年份加1。
最后,在main函数中,我们创建了一个CDate对象date,并调用了它的printCurrentDate和printNextDay方法来输出当前日期和加上一天后的日期。
阅读全文