完成CTime时间类和CDate日期类的设计,使得主程序能够正确运行。
时间类CTime包含私有成员数据时(hour)分(minute)秒(second),均为int类型。
CDate日期类由CTime时间类公有派生而来,包含私有成员数据年(year)月(month)日(day),均为int类型。
输入:1949 10 1 16 28 37
输出:
Function #1 is called!
[T1]9:10:11
Function #3 is called!
……
#include <iostream>
#include <iomanip>
using namespace std;
class CTime {
private:
int hour;
int minute;
int second;
public:
CTime(int h = 0, int m = 0, int s = 0) {
hour = h;
minute = m;
second = s;
}
void print() const {
cout << setw(2) << setfill('0') << hour << ":"
<< setw(2) << setfill('0') << minute << ":"
<< setw(2) << setfill('0') << second;
}
};
class CDate : public CTime {
private:
int year;
int month;
int day;
public:
CDate(int y = 0, int m = 0, int d = 0, int h = 0, int mi = 0, int s = 0)
: CTime(h, mi, s) {
year = y;
month = m;
day = d;
}
void print() const {
cout << "[T1]";
CTime::print();
cout << endl;
}
};
int main() {
int y, m, d, h, mi, s;
cin >> y >> m >> d >> h >> mi >> s;
CDate date(y, m, d, h, mi, s);
cout << "Function #1 is called!\n";
date.print();
cout << "Function #3 is called!\n";
return 0;
}
在此示例中,CTime时间类和CDate日期类都是使用C++语言编写的,其中CTime定义了时间类的私有成员hour、minute和second,以及print()方法用于打印时间。CDate从CTime公有派生而来,定义了日期类的私有成员year、month和day,并使用构造函数初始化时间和日期。CDate还定义了print()方法,该方法使用基类CTime的print()方法打印时间,并在前面添加了[T1]标识符表示这是一个类型为1的函数。
在主程序中,首先读入年、月、日、时、分、秒等时间信息,然后使用CDate类创建一个日期对象。接下来,调用date对象的print()方法打印时间。最后,输出一条消息表示Function #3被调用。
使用asctime函数时,我们为了把time_t型的日历时间转换成tm 结构体的分解时间,需要实现调用localtime 函数。这样一来,把日历时间转换成字符串就需要两个步骤了,未免太过于繁琐。ctime 函数就不一样了,只需一步便可!
//time04
#include <stdio.h>
#include <time.h>
int main()
{
time_t current = time(NULL);
printf("当前日期和时间:%s", ctime(¤t));
return 0;
}
ctime 表如下:
ctime | |
头文件 | #include <time.h> |
格式 | char *ctime(const time_t *timer); |
功能 | 把timer指向的日历时间转换成与asctime函数具有相同字符串形式的本地时间,相当于asctime(localtime(timer)) |
返回值 | 返回以分解时间为实际参数的asctime函数返回的指针 |