C 運算子過載相關知識

2021-09-02 08:07:36 字數 1646 閱讀 6351

c++允許在同一作用域中的某個函式和運算子指定多個定義,分別稱為函式過載或者運算子過載

程式設計師可以重定義或過載大部分 c++ 內建的運算子。這樣,他就能使用自定義型別的運算子。

過載的運算子是帶有特殊名稱的函式,函式名是由關鍵字 operator 和其後要過載的運算子符號構成的。與其他函式一樣,過載運算子有乙個返回型別和乙個引數列表。

//運算子過載

/*= + - ++ -- << >> new delete ()

運算子過載的規定:

1.不可以新造運算子

不能扭曲 如加法實現減法的功能

*/下面是可過載的運算子列表:

雙目算術運算子

+ (加),-(減),*(乘),/(除),% (取模)

關係運算子

==(等於),!= (不等於),< (小於),> (大於》,<=(小於等於),>=(大於等於)

邏輯運算子

||(邏輯或),&&(邏輯與),!(邏輯非)

單目運算子

+ (正),-(負),*(指標),&(取位址)

自增自減運算子

++(自增),--(自減)

位運算子

| (按位或),& (按位與),~(按位取反),^(按位異或),,<< (左移),>>(右移)

賦值運算子

=, +=, -=, *=, /= , % = , &=, |=, ^=, <<=, >>=

空間申請與釋放

new, delete, new[ ] , delete

其他運算子

()(函式呼叫),->(成員訪問),,(逗號),(下標)

//下列**通過使用成員函式演示運算子過載的概念,在這裡,物件作為引數進行傳遞,物件的屬性使用this運算子進行訪問。

#include using namespace std;

class compex //建立乙個複數類 如3+5i

compex operator++(/*this*/) //前置++

compex operator++(int) //後置++

compex operator--(/*this*/) //前置--

compex operator--(int) //後置--

friend ostream& operator<<(ostream& out,const compex& src);

friend istream& operator>>(istream& in, compex& src);

friend compex operator+(int src, const compex& c);

friend compex operator-(int src, const compex& c);

};ostream& operator<<(ostream& out,const compex& src) //類外實現《的過載

compex operator+(int src, const compex& c) //類外實現+

compex operator-(int src, const compex& c) //類外實現-

//測試

int main()

c 運算子過載 常用運算子 知識點

先給出一段 具體函式內容會在下面給出 class person bool operator person p 過載 bool operator person p 過載 person operator 前置 過載 person operator int 後置 過載 friend ostream ope...

C 運算子過載 過載特殊運算子

賦值運算子用於同類物件間的相互賦值。賦值運算子只能被過載為類的非靜態成員函式,不能過載為友元函式和普通函式。對於使用者自定義的類而言,如果沒有過載賦值運算子,那麼c 編譯器會為該類提供乙個預設的過載賦值運算子成員函式。預設賦值運算子的工作方式是按位對拷,將等到右邊物件的非靜態成員拷貝給等號左邊的物件...

C 運算子過載賦值運算子

自定義類的賦值運算子過載函式的作用與內建賦值運算子的作用類似,但是要要注意的是,它與拷貝建構函式與析構函式一樣,要注意深拷貝淺拷貝的問題,在沒有深拷貝淺拷貝的情況下,如果沒有指定預設的賦值運算子過載函式,那麼系統將會自動提供乙個賦值運算子過載函式。賦值運算子過載函式的定義與其它運算子過載函式的定義是...