C 平時作業 Time類過載運算子

2021-10-05 09:18:24 字數 1825 閱讀 9048

在這裡插入**片time類過載運算子

首先是我這次作業的一些要求

設計乙個時間類time,要求:

1、包含時(hour),分(minute),秒(second)私有資料成員;

2、包含建構函式,過載關於一時間加上另一時間的加法運算子"+"、過載輸出運算子"<>"。

要求,定義完time類後,main函式中宣告物件time1,time2,time3,然後實現

cin>>time1>>time2;

time3=time1+time2;

cout<>time1>>time2實現輸入

輸出描述:

輸出兩個時間相加的結果,注意,在main函式中必須用cout因為本次作業我在網上搜尋時,無法找到相匹配的程式**,於是,我決定自己製作**上傳,便於同學們參考。

首先就是要建立乙個時間類,並且根據題目要求對「+」,「<>"進行了符號過載,需要注意的就是一定要加上友元符號friend,因為需要呼叫類中的私有成員。還有就是再輸出時,如果時或分或秒只有個為輸出時,前面一定要補0。下面是我一開始的輸出結果:

但我的**比較麻煩,進行了修改,使用列舉,把所有情況都寫了出來,**就很長。然後詢問了一下老師,老師給了乙個更好方法,有興趣的同學可以嘗試一下~因為我作業已經提交了,所以就懶得修改了。。。

這裡用到了另乙個函式庫一定不要忘了。

在輸出輸入過載中,千萬不要把i,o搞過了,一定要分開。還有如果秒和分超過了59,一定要給前一位加一,然後自己通過求餘來變換,而時超過了23只需要賦0就可以了。

**認真多看幾遍,我相信一定可以看懂的,還有,雖然我把**貼了出來,希望同學還是能夠自己手打一下,可以加強記憶和理解。

下圖為輸出結果,顯然,是正確的。

#include

using

namespace std;

class

time

intgethour()

intgetminute()

intgetsecond()

friend time operator

+(time &t1,time &t2)

if(m3>59)

if(h3==24)

time t3

(h3,m3,s3)

;return t3;

}friend istream &

operator

>>

(istream &in,time &t)

friend ostream &

operator

<<

(ostream &out,time &t)

else

if(t.hour<

10&&t.minute<10)

else

if(t.hour<

10&&t.second<10)

else

if(t.minute<

10&&t.second<10)

else

if(t.hour<10)

else

if(t.minute<10)

else

if(t.second<10)

else

out<

":"<

":"<

return out;}}

;int

main()

/

C 過載運算子

運算子過載是一種形式的c 多型。在c 中,編譯器有能力把乙個由資料 物件和操作符共同組成的表示式,解釋為對乙個全域性或成員函式的呼叫。該全域性或成員函式被稱為操作符函式,通過重定義操作符函式,可以實現針對自定義型別 結構,類 的運算法則,並使之與內建型別一樣參與各種表示式。過載運算子可使 看起來更加...

C 過載運算子

本文主要講述加號運算子 自增運算子 流提取運算子運 流插入運算子 先給出vector類 class vector 建構函式 vector const vector v 拷貝建構函式 vector operator const vector v 過載 vector operator 過載前置自增運算子...

C 過載運算子

過載的運算子是帶有特殊名稱的函式,函式名是由關鍵字 operator 和其後要過載的運算子符號構成的。與其他函式一樣,過載運算子有乙個返回型別和乙個引數列表。如果我們定義的函式為類的成員函式 box operator const box 如果我們定義的函式為非成員函式,那麼我們需要為每次操作傳遞兩個...