過載運算子總結

2021-08-20 07:20:15 字數 1396 閱讀 6336

過載運算子

一過載運算子的限制

在我們定義了類之後,出現了一些新的資料型別,因此我們要根據資料型別的不同要重新編寫我們的運算子,在c++中大部分的預定義的運算子都可以被過載,但以下運算子不能被過載 "." ".*" "::" "?" "sizeof"。

過載運算子函式可以對運算子做出新的解釋,即定義使用者所需要的各種操作。但運算子過載後,原有的基本語句不變,包括

1 不改變運算子的優先順序

2 不改變運算子的結合性

3 不改變運算子所需要的運算元

要注意的是不能創新的運算子,只有系統預定義的運算子才能被過載。

二過載運算子的語法形式

運算子函式是一種特殊的成員函式或友元函式。成員函式的語句格式為:

型別 類名::operator op(參數列)

//相對於該類定義的操作

型別是函式的返回型別。「類名」是要過載該運算子的類。「op」表示要過載的運算子「參數列」列出該運算子所需要的運算元

過載運算子

的函式不能有預設引數. 

過載的運算子

必須和使用者定義的自定義型別一起使用,其引數至少應有乙個是類物件(或類物件的引用) 

防止使用者修改用於標準資料型別的運算子

用於類物件的運算子

一般必須過載,但有兩個例外「=」和「&」不必過載 

"=」,系統有預設的過載函式,就是逐個複製成員

,除非有必要(像動態分配記憶體的內容)就不必過載 

"&",它能返回類物件在記憶體中的起始位址 

要按習慣過載,雖然可以但還是不要把「+」過載成 減法,否則有違過載的初衷 

運算子過載函式可以是類成員

函式(如「+」左邊必須是類),類友元

函式(需要訪問類私有成員

時使用很方便),普通函式(訪問類私有成員

時不太方便) 

過載運算子有兩種方式

一種是成員函式過載運算子,另一種是友元函式過載運算子。

過載為類的成員函式

返回型別(類名::)operator運算子(形參表)

過載為類的友元函式

friend 函式型別 operator 運算子(形參表)

#include 

using

namespace

std;  

class

coordinate  

coordinate &operator--()  

coordinate operator--(int

)    

coordinate operator+(coordinate &c)  

public

:  int

m_ix;  

intm_iy;  

};  

intmain(

void

)    

過載運算子總結

基本知識點 不可過載的算符 sizeof 可過載的運算子 等 過載運算子的限制 不改變運算子的優先順序 不改變運算子的結合性 不改變運算子所需要的運算元 不能改變新的運算子 可對運算子作出新的解釋,原有的基本語義不變 運算子函式可過載為成員函式和友元函式 一元運算子 過載成員函式 object.op...

過載運算子

題目描述 定義乙個矩形類,資料成員包括左下角和右上角座標,定義的成員函式包括必要的建構函式 輸入座標的函式,實現矩形加法,以及計算並輸出矩形面積的函式。要求使用提示中給出的測試函式並不得改動。兩個矩形相加的規則是 決定矩形的對應座標分別相加,如 左下角 1,2 右上角 3,4 的矩形,與 左下角 2...

過載運算子

include include using namespace std class test test const int a v a test const test t1 v t1.v 以下過載小於號 比較兩個物件的大小 bool operator const test t1 const 比較物件...