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

来源:互联网 发布:知楚王琦 编辑:程序博客网 时间:2024/06/01 23:17
#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