第八周 專案2 Time類中的運算子過載

2021-07-02 01:24:56 字數 3139 閱讀 6689

實現time類中的運算子過載。

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); 

void display(); 

//二目的比較運算子過載 

bool operator > (ctime &t); 

bool operator < (ctime &t); 

booloperator >= (ctime &t); 

bool operator <= (ctime &t); 

bool operator == (ctime &t); 

bool operator != (ctime &t); 

//二目的加減運算子的過載 

//返回t規定的時、分、秒後的時間 

//例t1(8,20,25),t2(11,20,50),t1+t2為19:41:15 

ctime operator+(ctime &t); 

ctime operator-(ctime &t);//對照+理解 

ctime operator+(int s);//返回s秒後的時間 

ctime operator-(int s);//返回s秒前的時間 

//二目賦值運算子的過載 

ctime operator+=(ctime &c); 

ctime operator-=(ctime &c); 

ctime operator+=(int s);//返回s秒後的時間 

ctime operator-=(int s);//返回s秒前的時間 

提示1:並不是所有比較運算過載函式都很複雜

[cpp] view plaincopyprint?在code上檢視**片派生到我的**片

//比較運算返回的是比較結果,是bool型的true或false 

//可以直接使用已經過載了的運算實現新運算,例如果已經實現了 > ,則實現 <= 就可以很方便了…… 

bool ctime::operator <= (ctime &t)// 判斷時間t1<=t2 

if (*this > t) return false; 

return true; 

甚至可以如下面的**般簡練:

[cpp] view plaincopyprint?在code上檢視**片派生到我的**片

bool ctime::operator <= (ctime&t) 

return !(*this > t) 

提示2:並不是所有復合賦值運算過載函式都需要很複雜

[cpp] view plaincopyprint?在code上檢視**片派生到我的**片

//可以直接使用已經過載了的加減運算實現 

//這種賦值, 例如 t1+=20,直接改變當前物件的值,所以在運算完成後,將*this作為返回值 

ctime ctime::operator+=(ctime &c) 

*this=*this+c; 

return *this; 

提示3:請自行編制用於測試的main()函式,有些結果不必依賴display()函式,提倡用單步執行檢視結果

[參考解答]

第八周專案2 Time類中的運算子過載

實現time類中的運算子過載。class ctime 提示1 並不是所有比較運算過載函式都很複雜 比較運算返回的是比較結果,是bool型的true或false 可以直接使用已經過載了的運算實現新運算,例如果已經實現了 則實現 就可以很方便了 bool ctime operator ctime t 判...

第八周 專案2 Time類中的運算子過載

問題描述 實現time類中的運算子過載。cpp view plain copy print class ctime 提示1 並不是所有比較運算過載函式都很複雜 cpp view plain copy print 比較運算返回的是比較結果,是bool型的true或false 可以直接使用已經過載了的運...

第八周專案2 Time類中的運算子過載

問題及 檔名稱 project.cpp 作 者 陳文青 完成日期 2015年5月9日 版 本 號 v1.0 問題描述 實現time類中的運算子過載 程式輸入 程式輸出 include using namespace std class ctime 建構函式 ctime ctime int h,int...