1 5操作符過載與臨時物件

2021-08-01 22:55:34 字數 1916 閱讀 5483

操作符過載與臨時物件

operator overloading(操作符過載-1,成員函式) this

inline complex& 

__doapl(complex* ths, const complex& r)

inline complex&

complex::operator += (const complex& r)

而在inline complex& __doapl函式中,傳回去返回的是*ths這個object,complex&為接收端,接收端用何種形式接收(reference / value)接收,傳回去的返回端不管它。如果函式的設計足夠好,用reference接收,速度快;而使用value接收的話速度慢。

return by reference 語法分析

傳遞者無需知道接收者是以何種(reference / value)形式接收

如果像上面寫的 c2 += c1; 進行運算時,inline complex& complex::operator +=(const complex& r)的返回型別可以為void,即改寫為 inline void complex::operator += (const complex& r)

但是如果使用者這樣:c3 += c2 += c1使用,返回值為void,則無法進行運算。

當函式中的引數為類的物件時,盡量使用reference來傳遞,速度快,效率高。

operator overloading(操作符過載-2,非成員函式)

(無this)

為了應對使用者可能會用到的運算方法

上面中的函式均為全域性函式,即是非成員函式。

臨時物件

上圖中的complex(); 和complex(4,5);都是建立的沒有名字的臨時物件,且complex();由預設建構函式賦值為(0,0),臨時物件所在行的**執行結束後,立刻會從儲存空間中消失。

需要注意上圖中 正號 「+」的操作符過載函式的返回值型別這裡為return by value,但是也可以return by reference,即定義為inline complex& operator + (const complex& x)

下圖中的程式**為 == 、 != 操作符函式的過載,判斷是否相當返回bool值。

下面為共軛複數函式的定義:

注意:對於 << 操作符的過載,只可以寫作 非成員函式 進行過載,不可以寫作成員函式進行過載。

《的操作物件有兩個,乙個是cout,其類名為ostream,這個可以在stl中查詢,所以函式的過載第乙個引數為ostream& os,其前不可以加const,原因是傳進去給os輸出的東西,每一次的輸出都會改變os的狀態,所以不能加const。

5 操作符過載與臨時物件

1.操作符過載之一 把操作符過載成成員函式 在c 裡面,操作符是一種函式,這是c 的一大特點。操作符過載的原因 對於成員函式 2.return by reference的故事 傳遞者無需知道接收端是以by reference還是by value的形式接收object,如果是前者,就收的就是objec...

過載操作符與轉換

過載操作符函式 保留字operator後接需要定義的操作符號,有返回型別和形參表 不能過載的操作符有 不能通過連線其他合法符號來建立任何新的操作符 過載操作符必須具有乙個類型別運算元,以為如果只有內建型別物件的話,會重新定義原來的操作符 操作符的優先順序和結合性是固定的 不再具備短路求值特性 當運算...

模板與操作符過載

include include using namespace std template classu,class v bool mygreater u u,v v class student bool operator const int value const 過載student類中的 運算子 ...