C 筆記 第4課 操作符過載

2021-10-07 05:50:39 字數 2287 閱讀 2997

complex complex::

operator

+(complex c2)

// 或

complex complex::

operator+(

const complex

&c2)

// 類內

friend complex operator

+(complex c1, complex c2)

;// 類外

complex operator

+(complex c1, complex c2)

// 或

friend complex operator+(

const complex &c1,

const complex &c2)

// 前置單目運算子過載

void

operator++(

)// 後置單目運算子過載

void

operator++(

int)

必須使用引用,否則無法改變相應物件的值

// 類內

friend

void

operator

++(clock &c)

;friend

void

operator

++(clock &c,

int)

;// 類外

void

operator

++(clock &c)

void

operator

++(clock &c,

int)

// 類內

string &

operator

=(string str2)

;// 類外: 對等號運算子進行過載, 從而進行位址的深複製 (類似自己實現的複製建構函式)

// 這種方式不支援 str2=str2 或 (str2=str1)=str2

string &string::

operator

=(string str2)

// 所以需要進一步改寫 = 操作符過載函式為:

string &string::

operator

=(string &str2)

// 也可以寫為

string &string::

operator=(

const string &str2)

return

*this

;}

函式引數和返回值都必須是 i/o 物件的引用,而且只能將<<>>過載為類的友元函式

// 類內

friend ostream &

operator

<<

(ostream &

, complex &);

// 類外

ostream &

operator

<<

(ostream &output, complex &c)

如果想把複數complex類物件 c 的實部當做普通double數進行運算,則需要double(c)— 型別轉換函式,把乙個類的物件轉換成另乙個型別的資料

型別轉換函式只能作為相應類的成員函式

型別轉換函式要慎用 (因為運算子優先順序問題)

// 一般形式

operator 型別名 (

)// 把複數 complex 類物件 c 的實部當做普通 double 數進行運算

operator

double()

// 型別轉換函式

// 過載為成員函式

complex &complex::

operator++(

)complex complex::

operator++(

int)

// 過載為友元函式

complex &

operator

++(complex &c)

complex operator

++(complex &c,

int k)

第12課 操作符過載 上

source example 1 include using namespace std int main cout物件 顯示器物件,輸出 cin物件 鍵盤物件,輸入 source example 1.7 include using namespace std int main int main c...

C 第30課 操作符過載的概念

本文學習自 狄泰軟體學院 唐佐林老師的 c 課程 實驗1 通過實現 add 實現複數相加 實驗2 操作符過載實驗 實驗3 將操作符過載定義為類的成員函式,編譯器優先在成員函式中尋找操作符過載函式 實驗1 通過實現 add 實現複數相加 實驗2 操作符過載實驗 實驗3 將操作符過載定義為類的成員函式,...

C 學習筆記 第34課 陣列操作符的過載

1.過載陣列訪問修飾符 被忽略的事實,陣列訪問符是c c 中的內建操作符 陣列訪問符的原生意義是陣列訪問和指標運算 訪問某個元素 c語言深度剖析 a n a n n a n a 2.指標與陣列的複習 34 2.cpp include include using namespace std intma...