Time Date DateTime的继承与派生及运算符重载

来源:互联网 发布:中美黑客大战知乎 编辑:程序博客网 时间:2024/06/06 05:44
#include <iostream.h>  class Time{  public:      Time(){}      Time(int h,int m,int s)      {       hour=h;       minute=m;       second=s;      }      friend istream & operator>>(istream &,Time &);      friend ostream & operator<<(ostream &,Time &);      void operator =(Time &);      friend bool operator >(Time &t1,Time &t2);      friend bool operator <(Time &t1,Time &t2);      friend bool operator ==(Time &t1,Time &t2);      friend void compare(Time &,Time &);      void show()      {       cout<<hour<<":"<<minute<<":"<<second<<endl;      }      int hour;      int minute;      int second;  };  istream & operator>>(istream &input,Time &t1)  {   input>>t1.hour>>t1.minute>>t1.second;   return input;  }  ostream & operator<<(ostream &output,Time &t1)  {   output<<t1.hour<<":"<<t1.minute<<":"<<t1.second;   return output;  }  void Time::operator =(Time & t1)  {    hour=t1.hour;    minute=t1.minute;    second=t1.second;  }  bool operator >(Time &t1,Time &t2)  {   if(t1.hour>t2.hour)       return true;   else if(t1.hour==t2.hour&&t1.minute>t2.minute)       return true;   else if(t1.hour==t2.hour&&t1.minute>t2.minute&&t1.second>t2.second)       return true;   else       return false;  }  bool operator <(Time &t1,Time &t2)  {   if(!operator >(t1,t2))       return true;   else       return false;  }  bool operator ==(Time &t1,Time &t2)  {   if(t1.hour==t2.hour&&t1.minute==t2.minute&&t1.second==t2.second)       return true;   else       return false;  }  void compare(Time &t1,Time &t2)  {   if(operator>(t1,t2))       cout<<"t1>t2";   if(operator<(t1,t2))       cout<<"t1<t2";   if(operator==(t1,t2))       cout<<"t1=t2";  }  class Date{  public:      Date(){}      Date(int y,int mo,int d)      {       year=y;       month=mo;       day=d;      }      void get_value()      {       cin>>year>>month>>day;      }      void show()      {       cout<<year<<"-"<<month<<"-"<<day<<endl;      }  protected:      int year;      int month;      int day;  };  class DateTime:public Date,public Time  {  public:       DateTime(){}      DateTime(int y,int mo,int d,int h,int m,int s):Date(y,mo,d),Time(h,m,s){}      DateTime operator -(DateTime &c2);      DateTime operator +(Time &t1);      DateTime operator -(Time &t1);      void show()      {       cout<<year<<"-"<<month<<"-"<<day<<" "<<hour<<":"<<minute<<":"<<second<<endl;      }  };  DateTime DateTime::operator -(DateTime &c2)  {   DateTime c3;   c3.year=year-c2.year;   c3.month=month-c2.month;   c3.day=day-c2.day;   c3.hour=hour-c2.hour;   c3.minute=minute-c2.minute;   c3.second=second-c2.second;   return c3;  }  DateTime DateTime::operator +(Time &t1)  {   DateTime c3;   c3.year=year;   c3.month=month;   c3.day=day;   c3.hour=hour+t1.hour;   c3.minute=minute+t1.minute;   c3.second=second+t1.second;   return c3;  }  DateTime DateTime::operator -(Time &t1)  {   DateTime c3;   c3.year=year;   c3.month=month;   c3.day=day;   c3.hour=hour-t1.hour;   c3.minute=minute-t1.minute;   c3.second=second-t1.second;   return c3;  }  int main()  {   Time t1(12,20,30),t2(10,21,25);   cout<<"时间t1="<<t1<<endl;   cout<<"时间t2="<<t2<<endl;   Time t3,t4;   cout<<"输入时间t3:";   cin>>t3;   cout<<"时间t3="<<t3<<endl;   cout<<"时间t1赋值给时间t4"<<endl;   t4=t1;   cout<<"输出时间t4=";   t4.show();   cout<<"比较时间t1和时间t2:";   compare(t1,t2);   Date d1;   cout<<endl;   cout<<"输入日期d1:";   d1.get_value();   cout<<"输出日期d1=";   d1.show();   DateTime c1(1996,10,12,12,20,14),c2(1994,4,12,10,1,2);   DateTime c3,c4,c5;   cout<<"日期时间c3等于日期时间c1-c2:"<<endl;   c3=c1-c2;   cout<<"输出日期时间c3=";   c3.show();   cout<<"日期时间c4等于日期时间c1+时间t1:"<<endl;   c4=c1+t1;   cout<<"输出日期时间c4=";   c4.show();   cout<<"日期时间c5等于日期时间c1-时间t1:"<<endl;   c5=c1-t1;   cout<<"输出日期时间c5=";   c5.show();   return 0;  }  

0 0