類的主要目的之一是實現資訊的隱藏與封裝,即類的私有成員在類的外部不可見,不能直接進行訪問,只能通過對外的介面函式間接地進行訪問。但這樣往往會降低對私有資料成員的訪問效率。
有時候,某些特殊的函式或類需要對這些私有成員進行直接訪問,這時,就需要打破類的封裝。這種能夠對類的私有成員直接進行訪問的外部類或外部函式被稱為(類的)友元。 友元可分為友元函式和友元類。其中友元函式既可以是不屬於任何類的非成員函式,也可以是另乙個類的成員函式。
宣告友元的關鍵字是friend。
friend bool comparename(cstudent &student1, cstudent &student2);//宣告
bool comparename(cstudent &student1, cstudent &student2)///定義
二.類的成員函式作為友元
#include using namespace std;
class ca;
class cb
;class ca
void print() ;
class ca
void print() {cout<<"x="《小結:
(1)友元提高了程式的執行效率、實現了類之間的資料共享。但是,友元破壞了類的封裝性,這與物件導向程式設計的思想是相背離的,因此,在使用友元時要謹慎。
(2)友元關係是單向的,不具備交換性和傳遞性。例如,a是b的友元類,b是c的友元類,但a不一定是c的友元類,b也不一定是a的友元類,c也不一定是b的友元類。
(3)當調用友元函式時,需要通過實參指定要訪問的物件。友元函式只能通過物件(或物件指標、物件引用)訪問物件的成員。
(4)對友元的說明可以出現在類宣告中的任何地方,不受訪問許可權控制符的影響。
C 基礎 友元
友元 乙個常規的成員函式宣告描述了三件在邏輯上相互不同的事情 1.該函式能訪問類宣告的私用部分 2.該函式位於類的作用域之中 3.該函式必須經由乙個物件去啟用 有乙個this指標 通過將乙個函式宣告為友元可以使它只具有第一種性質 在c 中友元 friend 函式允許在類外訪問該類中的任何成員,就象成...
C 基礎 友元
友元概念 友元函式 定義 friend 資料型別 友元函式名 引數列表 includeusing namespace std 定義友元函式 class rectangle friend double area rectangle rec 定義友元 友元實現 double area rectangle...
基礎 C 的友元
在程式裡,有些私有屬性 也想讓類外特殊的一些函式或者類進行訪問,就需要用到友元的技術 友元的目的就是讓乙個函式或者類 訪問另乙個類中私有成員 友元的關鍵字為 friend 友元的三種實現 全域性函式做友元 類做友元 成員函式做友元 class building public string m sit...