從零開始的C (操作符函式過載)

2021-09-26 06:33:04 字數 954 閱讀 8731

什麼是操作符函式:在c++中針對類型別的物件的運算子,由於它們肯定不支援真正的運算操作,因此編譯器會將它們翻譯成函式,這種就叫作操作符函式(運算子函式)。

編譯器把運算翻譯成運算子函式,可以針對自定義的類型別設計它獨有的運算功能。

其實各種運算已經具備一些功能,再次實現它的就是叫作運算子過載。

成員函式:

const 類 operator#(const 類& that) const

注意:雙目錄運算子的運算結果是個右值,返回值應該加 const,然後為了const物件能夠呼叫引數應寫 const,函式也應該具備 const 屬性。

全域性函式:

const 類 operator#(const 類& a,const 類& b)

注意:全域性函式不是函式,可能會訪問類的私有成員,解決這種問題可以把函式宣告為類的友元函式(友元不是成員)。

友元:在類的外部某個函式中想訪問類的私有成員(public/protected/private)時,需要所在的函式宣告為友元,但友元只是朋友,因此它只有訪問權,沒有實際的擁有權(其根本原因是它沒 this 指標)。

友元宣告:把函式的宣告寫乙份到類中,然後在宣告前加上 friend 關鍵字,使用友元既可把操作符函式定義為全域性的,也可以確保類的封裝性。。

注意:友元函式與成員函式不會構成過載關係,因為它們不在同乙個作用域內。

1、獲取單參構造成賦值運算的呼叫方式。

string str = 「sunll」; // 會呼叫單參構造,而不呼叫賦值運算子

str = 「hehe」;

2、左運算元據不能具有 const 屬性

1、成員函式不能是常函式

2、全域性函式第乙個引數不能有 const 屬性

3、返回值應該都(成員/全域性)具備 const 屬性。

成員const 類 operator#(void)

全域性const 類 operator#(const 類& that)

C 函式過載操作符

c 可以對操作符 operator 進行過載,一般定義在類的成員函式中,以下面的 為例.class point 定義乙個類模板 建構函式 point 析構函式 過載算術操作符 類似 point operator const point other 過載關係操作符 類似 bool operator c...

C 操作符過載

1.作為成員過載 class myclass public myclass operator const myclass d cons friend myclass operator const myclass a1,const myclass a2 關於返回值型別的討論 呼叫者堆疊裡返回乙個物件效...

C 過載操作符

過載操作符 一 過載操作符的定義 1.過載操作符的結構 返回型別 operator 需要過載的操作符 形參列表 注意 形引數目應和運算元數目相同。2.過載操作符的幾條注意事項 1 過載的操作符名不能通過連線其他合法符號來建立任何新的操作符。如 2 過載操作符必須具備至少乙個類型別或列舉型別的運算元。...