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
- Time Date DateTime的继承与派生及运算符重载
- Time Date DateTime的继承与派生及运算符重载
- Time Date DateTime的继承与派生及运算符重载
- 继承与派生、运算符的重载、虚函数的应用
- 058day(自增,自减运算符重载和继承与派生的基本概念)
- C++语法细微(四)(运算符重载/继承派生)
- Time 运算符重载<<
- Time运算符重载
- 第十三周项目四——Date类,Time类,多继承的DateTime类
- 8.2 Time 的运算符重载
- Time类的运算符重载
- Time 类的运算符重载
- 实现Time类的运算符重载
- 实现TIME类的运算符重载
- [转]TIME类的运算符重载
- Time类的运算符重载
- Time类的运算符重载
- python datetime、time、date
- androidのEclipse中设置NDK编译设置
- Vector用法小记
- JDBC事务管理
- iwconfig tools
- Dialog弹出页按钮居中
- Time Date DateTime的继承与派生及运算符重载
- 最小二乘法椭圆拟合
- 蓝桥杯真题——运动员分组
- 初识jQuery
- 11093 - Just Finish it up
- 堆排序的JAVA实现和性能分析
- 获得数据表的所有列名
- ScrollView嵌套ViewPager结构,在ViewPager翻页会导致ScrollView自动滑到底部的问题。
- git 命令