多继承例题

描述

1、定义日期“Date”类,类中包含数据成员年、月、日,成员函数包括构造函数(只有带参的构造函数),设置日期,或取年、月、日,显示年、月、日等  

2、定义时间“Time”类,数据成员包括时分秒。成员函数的要求同date类

3、定义日期时间型“Date_Time”类

⑴公有继承Date类及Time类;

⑵不增加数据成员;  

⑶增加日期时间处理成员函数,包括初始化日期时间、设置日期时间、显示日期时间等。在

4、每个类都要求重载>> 和<<运算符< span="">

5.对Date_Time,重载〉运算符。

6. 编写main()函数进行测试。在主函数中,输入两个Date_Time类的数据,按照时间从小到大的顺序输出两个时间信息。

输入
输入年、月、日、时、分、秒。
输入年、月、日、时、分、秒。
输出
输出年、月、日、时、分、秒。
输出年、月、日、时、分、秒。
样例输入

2019 3 4 12 23 23
2018 4 3 11 11 11

样例输出

2018 4 3 11 11 11
2019 3 4 12 23 23
#include <iostream>
using namespace std;
class Date{
    protected:
    int year;
    int month;
    int day;
    public:
    Date(int year,int month,int day){
        this->year=year;
        this->month=month;
        this->day=day;}
    void setdate(int y,int m,int d){
        year=y; month=m;day=d;}
    void display(){cout<<year<<" "<<month<<" "<<day<<" ";}
    friend istream & operator >>(istream & input,Date &d);
    friend ostream & operator <<(ostream & output,const Date &d);
    };
istream & operator >>(istream &input,Date &d){
    input>>d.year>>d.month>>d.day;
    return input;}
ostream & operator <<(ostream &output,const Date &d){
    output<<d.year<<" "<<d.month<<" "<<d.day<<" ";
    return output;}
class Time{
    protected:
    int hour;
    int minute;
    int second;
    public:
    Time(int hour,int minute,int second){
        this->hour=hour;
        this->minute=minute;
        this->second=second;}
    void settime(int h,int m,int s){
        hour=h; minute=m; second=s;}
    void display(){cout<<hour<<" "<<minute<<" "<<second<<endl;}
    friend istream & operator >>(istream &input,Time &t);
    friend ostream & operator <<(ostream &output,const Time &t);
    };
istream & operator >>(istream &input,Time &t){
    input>>t.hour>>t.minute>>t.second;
    return input;}
ostream & operator <<(ostream &output,const Time &t){
    output<<t.hour<<" "<<t.minute<<" "<<t.second<<endl;
    return output;}
class Date_Time:public Date,public Time{
    public:
    Date_Time(int year=0,int month=0,int day=0,int hour=0,int minute=0,int second=0):Date(year,month,day),Time(hour,minute,second){}
    void setdate_time(int y,int mo,int d,int h,int m,int s){setdate(y,mo,d);settime(h,m,s);}
    void display(){
        cout<<year<<" "<<month<<" "<<day<<" "<<hour<<" "<<minute<<" "<<second<<endl;}
    bool operator > (const Date_Time &dt){
        if(year>dt.year) return true;
        if(year=dt.year){
            if(month>dt.month) return true;
            if(month=dt.month){
                if(day>dt.day) return true;
                if(day=dt.day){
                    if(hour>dt.hour) return true;
                    if(hour=dt.hour){
                        if(minute>dt.minute) return true;
                        if(minute=dt.minute){
                            if(second>dt.second) return true;
                            if(second=dt.second){
                                return false;}
                                return false;}
                                return false;}
                                return false;}
                                return false;}
                                return false;}
                                return false;}
    friend istream & operator >>(istream &input,Date_Time &dt);
    friend ostream & operator <<(ostream &output,const Date_Time &dt);

    };
istream & operator >>(istream &input,Date_Time &dt){
    cin>>dt.year>>dt.month>>dt.day>>dt.hour>>dt.minute>>dt.second;
    return input;}
ostream & operator <<(ostream &output,const Date_Time &dt){
    cout<<dt.year<<" "<<dt.month<<" "<<dt.day<<" "<<dt.hour<<" "<<dt.minute<<" "<<dt.second<<endl;
    return output;}
int main()
{
    Date_Time A;
    Date_Time B;
    int a1,a2,a3,a4,a5,a6,b1,b2,b3,b4,b5,b6;
    cin>>a1>>a2>>a3>>a4>>a5>>a6>>b1>>b2>>b3>>b4>>b5>>b6;
    A.setdate(a1,a2,a3);A.settime(a4,a5,a6);
    B.setdate(b1,b2,b3);B.settime(b4,b5,b6);
    if(A>B) cout<<B<<A;
    else cout<<A<<B;
    return 0;
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值