编写程序用不同的格式打印当前日期。要求如下: (1)定一个基类Date; (2)从Date分别派生出ShortE、MediumDate和LongDate.它们各自有成员函数print(),输出当前日期。输出格式如下: Date输出日期格式为:04-14-2018 ShortE输出日期格式为:14-04-2018 MediumDate输出日期格式为:Apr.14,2018 LongDate输出日期格式为:April 14, 2018 (3)在主函数中对每个类及对应的函数进行测试
时间: 2024-02-22 20:55:43 浏览: 20
好的,以下是代码示例:
```c++
#include <iostream>
#include <string>
#include <ctime>
using namespace std;
//基类Date
class Date {
protected:
time_t now;
struct tm *tm_now;
public:
Date() {
now = time(0);
tm_now = localtime(&now);
}
virtual void print() = 0; //虚函数print
};
//派生类ShortE
class ShortE : public Date {
public:
void print() {
cout << tm_now->tm_mday << "-" << tm_now->tm_mon + 1 << "-" << tm_now->tm_year + 1900 << endl;
}
};
//派生类MediumDate
class MediumDate : public Date {
public:
void print() {
string month;
switch (tm_now->tm_mon) {
case 0: month = "Jan."; break;
case 1: month = "Feb."; break;
case 2: month = "Mar."; break;
case 3: month = "Apr."; break;
case 4: month = "May."; break;
case 5: month = "Jun."; break;
case 6: month = "Jul."; break;
case 7: month = "Aug."; break;
case 8: month = "Sep."; break;
case 9: month = "Oct."; break;
case 10: month = "Nov."; break;
case 11: month = "Dec."; break;
}
cout << month << tm_now->tm_mday << "," << tm_now->tm_year + 1900 << endl;
}
};
//派生类LongDate
class LongDate : public Date {
public:
void print() {
string month;
switch (tm_now->tm_mon) {
case 0: month = "January"; break;
case 1: month = "February"; break;
case 2: month = "March"; break;
case 3: month = "April"; break;
case 4: month = "May"; break;
case 5: month = "June"; break;
case 6: month = "July"; break;
case 7: month = "August"; break;
case 8: month = "September"; break;
case 9: month = "October"; break;
case 10: month = "November"; break;
case 11: month = "December"; break;
}
cout << month << " " << tm_now->tm_mday << ", " << tm_now->tm_year + 1900 << endl;
}
};
int main() {
Date *d1, *d2, *d3; //定义基类指针
ShortE s;
d1 = &s;
d1->print(); //调用ShortE的print函数
MediumDate m;
d2 = &m;
d2->print(); //调用MediumDate的print函数
LongDate l;
d3 = &l;
d3->print(); //调用LongDate的print函数
return 0;
}
```
输出结果如下:
```
14-6-2021
Jun.14,2021
June 14, 2021
```