C 基礎學習第八課 運算子過載

2021-10-20 20:37:23 字數 1377 閱讀 7877

1,意義:

·運算子過載,就是賦予運算子新的含義,和函式過載一樣,乙個函式名可以用來代表不同功能的函式;·

·運算子過載是為了解決類物件之間的運算子,通常的運算子只用於算術運算,如常量int之間,因為編譯器已經定義了,而乙個類兩個物件之間成員進行運算必須重新定義,讓編譯器在遇到物件運算時能按我們要求進行運算

2,運算子過載限制

1,可以過載的運算子

算術運算子:

+ - * / %

自增、自減運算子:

++ –

位運算子:

| & ~ ^ << >>

關係運算子:

== != < ><= >=

賦值運算子:

= += -= /= %= |= ^= <<= >>=

單目運算子:

+ - * &

動態記憶體分配:

new delete new delete

其他運算子

() -> .

邏輯運算子:

|| && !

2,不能過載的運算子

成員訪問運算子:

.域運算子:

::成員指標訪問運算子:

.* ->*

長度運算子:

sizeof

條件運算子:

? :預處理符號:

#3,運算子過載規則

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

·不改變運算子的優先順序;

·不改變運算子的結合性;

·不改變運算子所需要的運算元;

·不能建立新的運算子;

4,運算子過載語法

返回型別 類名::operator op(引數列表)

注意:乙個運算子被過載後,原有意義沒有失去,只是定義了相對特定類的乙個新運算子;

5,運算子過載的兩種方法

1,運算子可以過載為兩種函式,成員函式或友元函式;

2,兩種形式的選擇時機

·左運算元(或者只有左運算元時),是本類的物件時,可選成員函式形式;

·左運算元不是本類的物件,必須採用非成員函式形式,一般是友元函式;

·一般單目運算子最好被過載為成員函式,雙目運算子過載為友元函式;

·具有可交換性的雙目運算子最好兩種形式都有(成員函式時適用左運算元為本類物件,友元函式時適用左運算元為其他類的物件);

6,單目運算子過載

·二元運算子:

objectl op objectr //objectl為左運算元 ,objectr為右運算元,op為運算子;

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

object.operator op(objectr) ;

·過載為友元函式:

operator op(objectl,objectr);

第八課 運算子

2 邏輯運算子 3 位運算子 類別運算子 算數運算子 賦值運算子 關係運算子 instanceof 邏輯運算子 位運算子 條件也運算子 擴充套件賦值運算子 浮點運算 由於 3 0 中,分母不能為 0 因此會報錯。此時如果進行下邊的運算,不報錯,則證明,當表示式執行到 1 2 的時候,就已經結束了 b...

C語言第八課

主要內容 指標 c語言的代表,會c語言不會指標,恭喜你c語言白學了 一 資料的儲存 位元組是最小的儲存單位 byte 乙個位元組成為乙個儲存單位 記憶體單元 不同的資料型別占用的儲存單元是不 同的 1個位元組是8位 char1個位元組 byte 8位 bit short2個位元組 byte 16位 ...

方法 CLR學習第八課

一 例項構造器 建立乙個引用型別例項時,分三步1.為該例項分配記憶體 2.初始化物件的附近成員 方法表指標,syncblockindex 3.在呼叫型別的例項構造器設定物件的初始值。系統為該例項分配記憶體時總是把所有位上的值設定為0 二進位制0 以保證構造器沒有賦值的物件都有乙個初始值0或者null...