類的重要特性是使資料封裝與隱藏,但同時也給外部函式訪問類中的私有和保護型別資料成員帶來了不便。為此,c++使用了"友元函式"。
一、友元函式
友元函式必須在類中進行宣告而在類外定義,宣告須在函式型別的前面加上friend關鍵字,友元函式雖不是類的成員函式,但它可以訪問類中的私有和保護型別資料成員。
友元函式的使用:
#include using namespace std;
class cobj
friend void showdata(cobj obj);
private:
int mx;
int my;
};void showdata(cobj obj)
int main()
執行結果:
mx = 1
my = 2
二、友元類
當乙個類作為另乙個類的友元時,這就意味著該類的所有成員函式都是另乙個類的友元函式。
友元類的使用:
#include using namespace std;
class cobj
friend class cfriend;
private:
void printdata() const
int mx;
int my;
};class cfriend
void showdata() const
private:
cobj mobj;
};int main()
執行結果:
mx = 3
my = 4
三、使用其他類的成員函式為友元
這是在《c++ primer中文版第4版》看到的,宣告類的時候可能會出現順序問題。
#include using namespace std;
class cobj; //提前宣告cobj,給cfriend類使用
class cfriend
;class cobj
friend void cfriend::showdata(cobj obj);
private:
int mx;
int my;
};void cfriend::showdata(cobj obj)
int main()
執行結果:
mx = 1
my = 2
C 學習 友元函式 7
類的重要特性是使資料封裝與隱藏,但同時也給外部函式訪問類中的私有和保護型別資料成員帶來了不便。為此,c 使用了 友元函式 一 友元函式 友元函式必須在類中進行宣告而在類外定義,宣告須在函式型別的前面加上friend關鍵字,友元函式雖不是類的成員函式,但它可以訪問類中的私有和保護型別資料成員。友元函式...
c 筆記7 友元函式及友元類
一 友元 作用 提高了程式的執行效率 減小了型別的檢查和安全性檢查所需的時間開銷,以及避免通過成員函式訪問私有成員變數壓棧出棧等操作 但破壞了類的封裝特性,使得非成員函式可以訪問類的私有成員。格式如下 friend 型別 函式名 形式引數 二 友元函式 友元函式是可以直接訪問類的私有成員的非成員函式...
C 友元函式和友元類學習
c 中的友元為封裝隱藏這堵不透明的牆開了乙個小孔,外界可以通過這個小孔窺視內部的秘密。友元的正確使用能提高程式的執行效率,但同時也破壞了類的封裝性和資料的隱藏性,導致程式可維護性變差。友元函式需要在類的定義中加以宣告,宣告時只需在友元的名稱前加上關鍵字friend,其格式如下 friend 型別 函...