四十五 態性 運算子過載的概念和規則

2021-07-02 15:02:51 字數 792 閱讀 7751

1、運算子過載的概念為什麼會有運算子過載?(不同的運算元型別產生不同操作)

除了內建資料型別,我們自定義資料型別也要進行某些運算,這就要求我們自定義運算子,實際上屬於函式過載

,不是運算子表示式而是呼叫運算子函式,運算元實際也是運算子函式的引數。

2、運算子過載規則a、雖然是為了讓自定義資料型別能使用預定義運算子而進行重定義。但一般重定義功能與原運算子功能相似,引數個數也相同,且至少有乙個引數為自定義資料型別。

b、過載後優先順序不變

c、除了類屬關係運算子「.」、成員指標運算子「.*」、作用域分辨符「::」、sizeof運算子和條件運算子「?:」這五種運算子外,其餘c++運算子都能過載,而且只有c++中已有的運算子可以過載。

「.」和「.*」不能過載是為了保證其功能不被改變,sizeof運算子和作用域分辨符的運算元不是一般的表示式,而是型別,所以也不能過載。

過載運算子作用於類物件,最常見的過載形式是類成員函式和友元函式。

函式型別 operator 運算子(參數列)

operator為過載時關鍵字。當不是後置『++』『- -』時,過載引數會比原運算子少乙個,這是因為類物件呼叫過載成員函式時,自己的資料是可以直接訪問的,不用在參數列中傳遞。

friend 函式型別 operator 運算子(參數列)

過載友員函式訪問類物件資料時,必須通過類物件名訪問,所以友元函式所有引數都要傳遞,引數個數與原過載符運算元相同。

C 中的運算子過載(一) 運算子過載的概念

概述 運算子過載,就是對已有的運算子重新進行定義,賦予其另一種功能,以適應不同的資料型別。運算子過載 operator overloading 只是一種 語法上的方便 也就是它只是另一種函式呼叫的方式,只是為了方便我們使用,運算子只能運算內建的資料型別,對於自定義的資料型別不能運算,所以我們可以過載...

(39 1)運算子過載之運算子過載的概念及實現

返回型別 operator運算符號 形式引數列表 operator後接需要過載的運算子,成為運算子函式。運算子函式的函式名就是 operator運算符號 class complex 複數類 private double real 實部 double image 虛部 complex operator...

C 運算子過載的概念和語法

所謂過載,就是賦予新的含義。函式過載 function overloading 可以讓乙個函式名有多種功能,在不同情況下進行不同的操作。運算子過載 operator overloading 也是乙個道理,同乙個運算子可以有不同的功能。實際上,我們已經在不知不覺中使用了運算子過載。例如,號可以對不同型...