c 運算子過載(2)

2021-09-23 06:17:18 字數 1812 閱讀 8295

語法格式

(1)類的內部

函式型別 operator 運算子 (形參表)

(2)類中宣告原型 類外定義

class x ;

函式型別 x::operator 運算子 (形參表)

說明 *可以用 return this 返回 當前物件的值

雙目運算子過載

對雙目運算子而言,成員運算子過載函式的形參表中僅有乙個引數,它作為運算子的右操作符。另乙個運算元是隱藏的 是該類當前的物件 它通過this指標隱含位址傳給函式的。

class x
在複數類complex中定義了兩個私有的成員變數 real 和 img 分別表示複數的實部和虛部,然後定義了幾個共有的成員函式:

兩個構造方法,乙個為不帶參的預設建構函式,另乙個為 帶兩個引數的建構函式

通過該建構函式實現對私有成員變數real和img的初始化,

然後是乙個沒有返回值對的disp()函式用來顯示輸出複數的值,

接下來就是對四則運算的過載函式和乙個賦值過載運算子的過載,

用來計算該複數的共軛複數,以及乙個》運算子的過載用來判斷複數的大小。

最後是乙個普通的成員函式,用來進行複數的取模運算

#include "math.h"

#includeusing namespace std;

class complex;

complex::complex()

complex::complex(double r,double i):real(r),img(i)//通過使用初始化列表來初始化引數

complex& complex::operator=(const complex &c)

void complex::disp()

int main(int argc, char* ar**)

complex complex::operator+(const complex &c)
ps :

visual c++ 6.0 沒有完全實現c++標準,#include 不支援友元函式運算子過載 需要加.h 就可以了。

(1) 雙目運算中 成員 ~的參數列有乙個引數 友元含兩個

單目運算中 成員沒有引數 友元 有乙個

(2)當整數與物件相加時最好用 友元

例如,如果將乙個複數與乙個整數相加,用成員運算子過載函式"+"運算子:

complex operator+(int a)

若com和com1是類complex的物件,則以下語句是正確的

com = com+100; //正確,

//這條語句被c++編譯系統解釋為:

com = com.operator(100);

然而,以下語句就不能工作了:

com = 100+com;

這條語句被c++編譯系統解釋為:

com = 100.operator(com);

如果定義以下的兩個友元運算子過載函式

friend complex operator+(complex com,int x) 

//運算子+的左側是類的物件,右側是整數

friend complex operator+(int a,complex com)

//運算子+的左側是整數,右側是類的物件

說明

C 之運算子過載 2

上一節主要講解了c 裡運算子過載函式,在看了單目運算子 過載的示例後,也許有些朋友會問這樣的問題。自增運算子在c或c 中既可以放在運算元之前,也可以放在運算元之後,但是前置和後置的作用又是完全不同的 q前置運算子 先加1,再賦值 後置運算子 先賦值,再加1 那麼要怎麼過載它們,才可以有效的區分開來呢...

C 類 運算子過載 2

定義運算子過載的步驟 使用成員函式和友元函式過載二元運算子 使用成員函式和友元函式過載一元運算子 a.我們首先要知道根據運算元的個數將運算子分為一元運算子和二元運算子。b.定義運算子過載的步驟 a.使用友元函式完成二元運算子過載 函式返回值 operator op object a,object b...

C 之運算子過載 2

上一節主要講解了c 裡運算子過載函式,在看了單目運算子 過載的示例後,也許有些朋友會問這樣的問題。自增運算子在c或c 中既可以放在運算元之前,也可以放在運算元之後,但是前置和後置的作用又是完全不同的 q前置運算子 先加1,再賦值 後置運算子 先賦值,再加1 那麼要怎麼過載它們,才可以有效的區分開來呢...