C 基礎 類的運算子過載與友元函式

2021-10-09 17:32:23 字數 1404 閱讀 8880

函式格式:

operatorop(argument-list)

operator+() ; 過載+運算子

operator*() ; 過載運算子

過載運算子,對類物件之間運算等 很方便,直接可以用 + - / 等呼叫

eg:

//申明

class

ctime

;//使用

ctime a[2]

=;ctime b=a[1]

+a[0];

//== a[1].sum(a[0]) == a[1].opertor+(a[0])

友元函式不是 ???類的成員函式,但是可以訪問類的私有變數

eg:

//類成員過載函式 

ctime operator*(

double m)

;//使用時,必須如下

ctime a,b;

b=a*

2.5;

//左邊為ctime 物件,如果換位就會出錯,b=2.5*a;無效;如圖a

//解決這個問題,就需要申明乙個非類成員的函式

ctime operator*(

double m,

const ctime &t)

;但是他不能訪問私有變數,故只能宣告成為友元函式

//友元函式

friend ctime operator*(

double m,

const ctime &);

//這個可以寫在類裡面就可以訪問 私有變數了

詳細**見附錄

表示方法: operator + typename();

轉換函式是類的方法;不需要引數,需要通過類物件來呼叫,從而告知函式要轉換的值

放在類裡面,擁有this指標,能夠訪問私有成員

為了保險起見;一般都會新增 explicit 防止不必要的隱式轉換

過多的轉換函式容易導致 二義性,隱式太多,導致編譯器不知道執行哪個函式

c 內聯函式 友元函式 友元類 運算子過載

短小 頻繁,且沒有迴圈體 的功能 1.內聯函式 特點 1.在函式名前加inline關鍵字 2.以空間換取時間,編譯階段整個函式體替換呼叫部分 2.巨集定義 1.對變數巨集定義 define 巨集名 值 2.帶參函式的巨集定義 define 函式名 形參表 不需要型別 函式體 1.整體思維 2.不進行...

C 友元運算子過載函式

運算子過載函式 實現物件之間進行算數運算,實際上是物件的屬性之間做運算 包括 加號 減號 負號 正號 運算子過載函式分為 普通友元運算子過載函式 成員友元運算子過載函式 成員運算子過載函式 運算子運算子過載函式按運算型別為 雙目運算子過載函式,如加 減 乘 除 賦值 單目運算子過載函式 自加 自減 ...

運算子過載,友元函式

運算子過載 include using namespace std class cint cint const cint timp public cint operator const cint timp const cint add const cint timp const cint add c...