項目二-Time類定義Time類中的運算子多載

來源:互聯網
上載者:User
/** Copyright (c) 2013, 煙台大學電腦學院* All rights reserved.* 檔案名稱:text.cpp* 作者:胡穎* 完成日期:2013年4月26日* 版本號碼:v1.0** 輸入描述:無* 問題描述:利用函數實現Time類中的運算子多載增加<<和>>運算子的重載* 程式輸出:輸出時間的運算結果* 問題分析:* 演算法設計:略*/#include <iostream>using namespace std;class CTime{private:unsigned short int hour;    // 時unsigned short int minute;  // 分unsigned short int second;  // 秒public:CTime(int h=0,int m=0,int s=0);void setTime(int h,int m,int s);friend ostream& operator<<(ostream&,CTime&);friend istream& operator>>(istream&,CTime&);bool operator > (CTime &t);bool operator < (CTime &t);bool operator >= (CTime &t);bool operator <= (CTime &t);bool operator == (CTime &t);bool operator != (CTime &t);CTime operator+(CTime &c);//返回c所規定的時、分、秒後的時間,例t1(8,20,25),t2(11,20,50),t1+t2為:41:15CTime operator-(CTime &c);//對照+理解CTime operator+(int s);//返回s秒後的時間CTime operator-(int s);//返回s秒前的時間//一目運算子的重載CTime operator++(int);//後置++,下一秒CTime operator++();//前置++,下一秒CTime operator--(int);//後置--,前一秒CTime operator--();//前置--,前一秒//賦值運算子的重載CTime operator+=(CTime &c);CTime operator-=(CTime &c);CTime operator+=(int s);//返回s秒後的時間CTime operator-=(int s);//返回s秒前的時間};//建構函式ostream& operator<<(ostream&output,CTime&t){    output<<t.hour<<':'<<t.minute<<':'<<t.second<<endl;    return output;}istream& operator>>(istream&input,CTime&t){    cout<<"請輸入時、分、秒:";   input>>t.hour>>t.minute>>t.second;   return input;}CTime::CTime(int h,int m,int s){hour=h;minute=m;second=s;}// 設定時間void CTime::setTime(int h,int m,int s){hour=h;minute=m;second=s;}//比較子的重載bool CTime::operator > (CTime &t) // 判斷時間t1>t2{if (hour>t.hour) return true;if (hour<t.hour) return false;if (minute>t.minute) return true;if (minute<t.minute) return false;if (second>t.second) return true;return false;}bool CTime::operator < (CTime &t)// 判斷時間t1<t2{if (hour<t.hour) return true;if (hour>t.hour) return false;if (minute<t.minute) return true;if (minute>t.minute) return false;if (second<t.second) return true;return false;}bool CTime::operator == (CTime &t)// 判斷時間t1==t2{if (*this<t || *this>t) return false;return true;}bool CTime::operator != (CTime &t) // 判斷時間t1!=t2{if (*this==t) return false;return true;}bool CTime::operator >= (CTime &t)// 判斷時間t1>=t2{if (*this<t) return false;return true;}bool CTime::operator <= (CTime &t) // 判斷時間t1<=t2{if (*this>t) return false;return true;}CTime CTime::operator + (CTime &t){int h,m,s;s=second+t.second;m=minute+t.minute;h=hour+t.hour;if (s>59){s-=60;m++;}if (m>59){m-=60;h++;}if (h>23) h-=24;CTime t0(h,m,s);return t0;}//返回s秒後的時間CTime CTime::operator+(int s){int ss=s%60;int mm=(s/60)%60;int hh=s/3600;CTime t0(hh,mm,ss);return *this+t0;}// 計算時間之差CTime CTime::operator - (CTime &t){int h,m,s;s=second-t.second;m=minute-t.minute;h=hour-t.hour;if (s<0){s+=60;m--;}if (m<0){m+=60;h--;}if (h<0) h+=24;CTime t0(h,m,s);return t0;}//返回s秒前的時間CTime CTime::operator-(int s){int ss=s%60;int mm=(s/60)%60;int hh=s/3600;CTime t0(hh,mm,ss);return *this-t0;}//一目運算子的重載CTime CTime::operator++(int)//後置++,下一秒{CTime t=*this;*this=*this+1;return t;}CTime CTime::operator++()//前置++,下一秒{*this=*this+1;return *this;}CTime CTime::operator--(int)//後置--,前一秒{CTime t=*this;*this=*this-1;return t;}CTime CTime::operator--()//前置--,前一秒{*this=*this-1;return *this;}//賦值運算子的重載CTime CTime::operator+=(CTime &c){*this=*this+c;return *this;}CTime CTime::operator-=(CTime &c){*this=*this-c;return *this;}CTime CTime::operator+=(int s)//返回s秒後的時間{*this=*this+s;return *this;}CTime CTime::operator-=(int s)//返回s秒前的時間{*this=*this-s;return *this;}int main(){CTime t1,t2,t;cin>>t1>>t2;cout<<endl;cout<<"t1為:"<<t1<<endl;cout<<"t2為:"<<t2<<endl;cout<<"下面比較兩個時間大小:\n";if (t1>t2) cout<<"t1>t2"<<endl;if (t1<t2) cout<<"t1<t2"<<endl;if (t1==t2) cout<<"t1=t2"<<endl;if (t1!=t2) cout<<"t1≠t2"<<endl;if (t1>=t2) cout<<"t1≥t2"<<endl;if (t1<=t2) cout<<"t1≤t2"<<endl;cout<<endl;//在測試下面的代碼時,採用逐步執行的方法跟蹤 t=t1++;    cout<<"t=t1++=:"<<t;    t=++t1;    cout<<"t=++t1=:"<<t;    t1--;    cout<<"t1--=:"<<t1;    --t1;    cout<<"--t1=:"<<t1;    t=t1+t2;    cout<<"t=t1+t2=:"<<t;    t=t1-t2;    cout<<"t=t1-t2=:"<<t;    t=t1+45000;    cout<<"t=t1+45000=:"<<t;    t=t1-66000;    cout<<"t=t1-66000=:"<<t;    t1+=t2;    cout<<"t1+=t2=:"<<t1;    t1-=t2;    cout<<"t1-=t2=:"<<t1;    t1+=4500;    cout<<"t1+=4500=:"<<t1;    t1-=6600;    cout<<"t1-=6600=:"<<t1;}

運算結果:

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.