C 友元函式

2021-10-19 17:48:31 字數 1403 閱讀 9130

類具有封裝性和隱蔽性,只有類的成員函式才能訪問類的私有成員,友元函式可以訪問其他類中的私有成員,有助於資料共享,提高程式效率。

特點:單方向 a->b b->a err

不具有傳遞性 a->b b->c a->c err

不具有繼承特性(和兒子是朋友,和爸爸不一定是朋友;和爸爸是朋友,和兒子不一定是朋友;)

1.外部函式友元

注意:主函式也是外部函式

windows支援多執行緒,執行緒是排程單位,程序是資源單位

linux有兩種排程單位,程序、執行緒

class

int~

int(

)friend

void

fun();

};void

fun(

)int

main()

上述寫法錯誤,類相當於乙個圖紙,應該訪問類產生物件,沒有物件就不用談可訪問性

class

int~

int(

)friend

void

fun(int& it)

;friend

intmain()

;};void

fun(int& it)

intmain()

2.成員函式友元

函式不是全域性的,是某一型別的函式

void object::fun(int& it)的實現必須在class int之後,否則編譯不通過,因為要等int識別完成後才能知道int裡面的內容

class

int;

class

object

;class

int~

int(

)friend

void object::

fun(int& it);}

;void object::

fun(int& it)

intmain()

3.類友元

如果object中有多個方法,要都註冊成友元就很麻煩,於是就有類友元

把object註冊成友元類,object產生的物件,可以訪問int型別產生物件的公有、私有、保護

友元與訪問限定符沒有關係,沒有公有、私有友元一說

class

int;

class

object

;class

int~

int()}

;void object::

fun(int& it)

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

眾所周知,c 控制對類物件私有部分的訪問。通常,公有類方法提供唯一的訪問途徑,但是有時候這種限制太嚴格,以至於不適合特定的程式設計問題。在這種情況下,c 提供了另外一種形式的訪問許可權 友元,友元有3種 友元函式 友元類 友元成員函式。通過讓函式成為類的友元 即 友元函式 可以賦予該函式與類的成員函...

友元 友元函式 友元類和友元成員函式 C

有些情況下,允許特定的非成員函式訪問乙個類的私有成員,同時仍阻止一般的訪問,這是很方便做到的。例如被過載的操作符,如輸入或輸出操作符,經常需要訪問類的私有資料成員。友元 frend 機制允許乙個類將對其非公有成員的訪問權授予指定的函式或者類,友元的宣告以friend開始,它只能出現在類定義的內部,友...

友元 友元函式 友元類和友元成員函式 C

有些情況下,允許特定的非成員函式訪問乙個類的私有成員,同時仍阻止一般的訪問,這是很方便做到的。例如被過載的操作符,如輸入或輸出操作符,經常需要訪問類的私有資料成員。友元 frend 機制允許乙個類將對其非公有成員的訪問權授予指定的函式或者類,友元的宣告以friend開始,它只能出現在類定義的內部,友...