在這裡插入**片
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 如果我們定義的函式為非成員函式,那麼我們需要為每次操作傳遞兩個...