友元函式,內聯函式

2021-08-29 00:19:00 字數 1685 閱讀 1553

目錄

友元函式

為什麼要引入友元函式:

什麼時候使用友元函式:

怎麼使用友元函式:

友元函式的分類:

**如下:

內聯函式:

為什麼要使用內聯函式

內斂函式定義格式

內聯函式注意事項:

**展示:

有權訪問類的所有私有(private)成員和保護(protected)成員。儘管友元函式的原型有在類的定義中出現過,但是友元函式並不是成員函式。友元可以是乙個函式,該函式被稱為友元函式;友元也可以是乙個類,該類被稱為友元類,在這種情況下,整個類及其所有成員都是友元。

如果要宣告函式為乙個類的友元,需要在類定義中該函式原型前使用關鍵字friend

在實現類之間資料共享時,減少系統開銷,提高效率

具體來說:為了使其他類的成員函式直接訪問該類的私有變數

即:允許外面的類或函式去訪問類的私有變數和保護變數,從而使兩個類共享同一函式

優點:能夠提高效率,表達簡單、清晰

缺點:友元函式破環了封裝機制,盡量不使用成員函式,除非不得已的情況下才使用友元函式。

1)運算子過載的某些場合需要使用友元。

2)兩個類要共享資料的時候

友元函式的引數:

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

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

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

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

友元函式的位置:

因為友元函式是類外的函式,所以它的宣告可以放在類的私有段或公有段且沒有區別。

友元函式的呼叫:

可以直接調用友元函式,不需要通過物件或指標

1、普通函式友元函式:

a) 目的:使普通函式能夠訪問類的友元

b) 語法:宣告位置:公有私有均可,常寫為公有

宣告: friend + 普通函式宣告

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

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

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

#include using namespace std;

class box

;// 成員函式定義

void box::setwidth( double wid )

// 請注意:printwidth() 不是任何類的成員函式

void printwidth( box box )

//即普通函式前,加上inline即可成為內聯函式。

內聯函式實際上是一種空間換時間的做法。

c++類內給出函式體定義的成員函式被預設為內聯函式,類外給出函式體的成員函式不是內聯函式。

1:內聯函式不能含有複雜的分支或迴圈結構(如switch和whlie)。

2:遞迴呼叫的函式不能定義為內聯函式。

3:內聯函式**不宜過長。

#include using namespace std;

inline int aa(int a,int s)

int main()

{    cout 《輸出的結果是:

3672

8

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

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

友元函式 友元類 友元成員函式

注意友元成員函式定義的3個步驟 include include include using namespace std class a class c class a class b void c display const a a 3.最後定義display,此時才可以使用a的私有成員 void ...

友元函式 友元類 友元成員函式

一般來說,類內的私有資料是對外不可見的,但在有些情況下,我們需要在類外對該類的私有資料進行訪問,這就需要用到一種新技術 友元 friend 即在宣告前新增關鍵字friend。友元關係是單向的,即如果a是b的友元,但b不一定是a的友元 友元關係無傳遞性,即如果a是b的友元,b是c的友元,但a不一定是c...