友元函式以及過載運算子

2021-07-31 14:38:07 字數 751 閱讀 2160

一:使用友元函式的原因:

實現了類之間的共享,減少開銷,提高系統的效率;

(缺點是:破壞了類的封裝性,能不用盡量不用)

二:使用時機:

一般是:運算子的過載,資料的共享;

三:使用方法

因為友元函式沒有this指標,則引數要有三種情況:

1、  要訪問非static成員時,需要`物件`做引數;--常用(友元函式常含有引數)

2、 要訪問static成員或全域性變數時,則不需要物件做引數

3、 如果做引數的物件是全域性物件,則不需要物件做引數

四:友元函式的分類:

一:普通友元函式:使普通函式能夠訪問類的的友元。

語法:宣告位置:共有私有都可以;

宣告:friend + 普通函式宣告;

實現位置:可以在類外或者類中;

實現**:與普通**相同(不過不用加friend和類::)

呼叫:類似普通函式直接呼叫;

class student

;void show()

;void boy::display(girl &x)//函式是boy的成員函式,也是girl中的友元函式

class giel

;void main()

三:類y的乙個成員函式為類x的友元函式

宣告:friend +成員函式宣告;

過載運算子以及友元函式

在自己已經創造好的類中如果想更加簡化一些運算,比如之前兩個類中的物件如果想要相加必須通過類成員函式來實現,現在假設之前建立好的time類中的兩個物件 time a time b timec c a b 如果想實現上述運算,就要求過載運算子 利用關鍵字operator來實現。首先在標頭檔案中就要宣告過...

C 友元函式以及運算子過載

一 友元函式的作用 函式的私有和保護變數在類內可以訪問,在類外只可訪問公有變數 派生類在類內只可訪問其基類的公有變數和保護變數,在類外只可訪問其公有變數 要看具體的繼承型別 因此,在有些情況下,需要訪問類的私有或保護變數時,不得不呼叫其成員函式,因為只有成員函式才有訪問的許可權。因而多出許多時間開銷...

c 過載運算子 友元函式

運算子的過載使得我們可以更加方便的使用常見的運算子進行操作。過載運算子的函式格式如下 operatorop argement list 接下來的例子中,我們將定義乙個time類,並通過過載運算子 和 來實現時間的加法和輸出顯示,其中會使用友元函式 friend ifndef time h defin...