運算子過載知識總結

2021-08-20 06:52:39 字數 2524 閱讀 5976

1.運算子過載:

(1)過載規則:

(2)過載運算子的限制

過載運算子函式可以對運算子作出新的解釋,但原有基本語義不變: ø

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

不改變運算子的結合性 ø

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

不能建立新的運算子

(3)運算子函式可以過載為成員函式或友元函式 

1.一元運算子

object 

op或   

opobject  (object為運算元) ø

過載為成員函式,解釋為:

object .

operator

op ()      //注意:參數列中沒有引數; 

運算元由物件

object(即當前物件)

通過this

指標隱含傳遞 ø

過載為友元函式,解釋為:

operator  

op (object)

運算元由參數列的引數

object

提供 

2.二元運算子

objectl

op  

objectr ø

過載為成員函式,解釋為:

objectl

. operator  

op (

objectr

)    //注意:形參表中只有乙個引數; 

左運算元由

objectl(即當前物件)

通過this

指標隱含傳遞,右運算元由引數

objectr傳遞

ø過載為友元函式,解釋為:

operator   

op (

objectl

, objectr)

左右運算元都由引數傳遞 

(4)用成員函式過載運算子

class x
返回型別 x::operator運算子(形參表)

(5)用友元函式過載運算子

友元函式過載運算子常用於運算子的左右運算元型別不同的情況 ø

友元函式沒有

this

指標,所需運算元都必須在參數列顯式

宣告,很容易實現型別的隱式轉換 ø

c++中

不能用友元函式過載的運算子有

=   

()    []   -

>

(6)數學類中常用的運算子過載

設 a  aobject ;

運算子 ++和 -- 有兩種方式:

前置方式: ++aobject --aobject

成員函式 過載 a :: a operator++ () ;

解釋為: aobject . operator ++( ) ;

友元函式 過載 friend a operator++ (a &) ;

解釋為: operator ++( aobject ) ;

後置方式: aobject ++ aobject --

成員函式 過載 a :: a operator++ (int) ; //注意形參;

解釋為: aobject . operator ++( 0 ) ; //0為偽引數;

友元函式 過載:friend a operator++ (a &, int) ;

解釋為: operator++(aobject, 0)

舉例:
成員函式過載++ :

class increase

void display( ) const

~ vector ( )

int & operator [ ] ( int i )

private :

int * v ; int size ;

};int main ( )

()運算子用於函式呼叫,過載括號運算子可以方便的實現很多功能。

過載格式:     型別  類

:: operator()  (

參數列)

;呼叫:

x ( arg1, arg2, … )   或

x .operator ()

(arg1, arg2, … ) 舉例

#include using namespace std ;

class f

;double f :: operator ( ) ( double x , double y )

int main ( )

ø用友元函式過載

<<

和》,輸出和輸入使用者自定義的資料型別 

定義輸出運算子「<<」過載函式的一般格式如下:

ostream& operator<<(ostream& out,類名& obj)

運算子過載總結

過載運算子 一,知識點總結 過載運算子函式可以對運算子做出新的解釋,即定義使用者所需要的各種操作。但運算子過載後,原有的基本語義不變,包括 不改變運算子的優先順序 不改變運算子的結合性 不改變運算子所需要的運算元 不能建立新的運算子 優先順序和結合性主要體現在過載運算子的使用上,而運算元的個數不但體...

運算子過載總結

過載為普通函式 正常情況下都是友元函式 時,引數個數為運算子目數 過載為成員函式時,引數個數為運算子目數減1.一般情況下,單目運算子最好過載為類的成員函式 雙目運算子則最好過載為類的友元函式。什麼情況下成員函式不能解決問題?比如complex c c 5相當於呼叫c.operator 5 可以用 但...

運算子過載知識點總結

本章學習的運算子的過載,作以下總結 一 從幾個問題來入手 1.什麼是運算子的過載?運算子與類的結合,產生新的含義。2.為什麼要引入運算子過載?作用 為了實現類的多型性 多型是指乙個函式名有多種含義 運算子過載允許c c 的運算子在使用者定義型別 類 上擁有乙個使用者定義的意義。過載的運算子是函式呼叫...