過載運算子以及友元函式

2021-06-27 08:28:17 字數 713 閱讀 3005

在自己已經創造好的類中如果想更加簡化一些運算,比如之前兩個類中的物件如果想要相加必須通過類成員函式來實現,現在假設之前建立好的time類中的兩個物件

time a;

time b;

timec;

c=a+b;

如果想實現上述運算,就要求過載運算子:利用關鍵字operator來實現。

首先在標頭檔案中就要宣告過載運算子函式

time operator +(const time & t)const;

在定義方法的函式中過載+運算子:

time time::operator+(const time & t)const

這樣就可以將兩個定義的類直接進行加法運算。

除此之外,當我們重新定義乘法運算時,如下面的函式:

time time::operator *(double mult)const

假如為:a=b*num,其中a,b為類物件,num為實數,可以進行乘法運算,但如果是這樣:

a=num*b;

顯然不能進行運算了,這樣就要求在定義乙個過載,必須為友元函式,則需要關鍵字friend如下:

在標頭檔案中定義:

friend time operator*(double m,const time & t)

return t*m;   

這樣就滿足了之前的那種運算,當然友元函式最重要的在於對《運算子的定義,請見c++ primer 415頁。

友元函式以及過載運算子

一 使用友元函式的原因 實現了類之間的共享,減少開銷,提高系統的效率 缺點是 破壞了類的封裝性,能不用盡量不用 二 使用時機 一般是 運算子的過載,資料的共享 三 使用方法 因為友元函式沒有this指標,則引數要有三種情況 1 要訪問非static成員時,需要 物件 做引數 常用 友元函式常含有引數...

c 過載運算子 友元函式

運算子的過載使得我們可以更加方便的使用常見的運算子進行操作。過載運算子的函式格式如下 operatorop argement list 接下來的例子中,我們將定義乙個time類,並通過過載運算子 和 來實現時間的加法和輸出顯示,其中會使用友元函式 friend ifndef time h defin...

成員函式過載運算子和友元函式過載運算子的比較

1.對雙目 運算子而言,成員 函式過載 運算子的函式引數表中只有乙個引數,而用友元函式過載運算子函式引數表中含有兩個引數。對單木運算子來說,成員函式過載運算子的函式引數表中沒有引數,而用友元函式過載運算子函式引數表中含有乙個函式。這個問題要搞清楚,有乙個this 指標的問題。2.雙目運算子一般可以用...