一、定义一个日期类Date。(60分)
其中有三个私有访问属性数据成员,分别存放年、月、日的值;含有一无参数的构造函数将年、月、日初始化为0、0、0;一带参数的构造函数,使用三个参数初始化数据成员;定义一个SetDate(int y,int m,int d)函数重置日期;定义GetYear(),GetMonth(),GetDay()函数分别获取当前对象的年、月、日的值;定义一个 + 运算符的重载函数实现Date类型对象加一个整数,注意日期的进位;定义一个拷贝构造函数;定义一个 = 运算符重载函数;定义一个Show()函数显示当前对象的日期,注意日期格式要求为:YYYY-MM-DD,要求在派生类中能够实现多态。控制台程序的主函数如下:
#include<iostream.h>
//TODO
//////////////
void main()
{
Date a,b,c;
Date d(2008,4,30); d.Show();
Date e(d); e.Show();
a.SetDate(1998,1,23); a.Show();
b=a; b.Show();
c=d+1;c.Show();
cout<<c.GetYear()<<"/"<< GetMonth()<<"/"<< GetDay()<<endl;
}
程序运行的显示结果:
二、由上一题的Date类公有派生出一个DateTime类。(40分)
DateTime类作为日期时间类,该类的对象除了日期数据属性外还有时间数据属性,为时、分、秒,24小时制;分别定义带参数的不带参数的构造函数;定义一个SetDateTime(形参表)函数和SetTime(形参表)函数,前者能够同时重置日期和时间,后者只能重置时间;设计一个Show()函数显示当前对象的日期和时间,显示格式为:YYYY-MM-DD hh:mm:ss,结合基类Show()函数实现多态。控制台程序的主函数如下:
#include<iostream.h>
//TODO
//////////////
void main()
{
Date a(2008,4,30); a.Show();
DateTime b;
DateTime c(实参表);c.Show();//实参:
b SetTime(实参表);b.Show();//实参:
b SetDateTime(实参表);b.Show();//实参:
Date *p;
p=&a;p->Show();
p=&b;p->Show();
}
程序运行的显示结果: