類可以允許其他類或者函式訪問它的非公有成員,方法是令其他類或者函式成為它的友元。如果類想把乙個函式作為它的友元,只需要增加一條以friend關鍵字開始的函式宣告語句即可:
class
data
;//data介面的非成員組成部分的宣告
data add()
;std::istream &
read()
;
友元宣告只能出現在類定義的內部,但是出現的具體位置不限。友元不是類的成員也不受它所在區域訪問控制級別的約束。
友元的宣告僅僅指定了訪問的許可權,而非乙個通常意義上的函式宣告。如果希望類的使用者能夠呼叫某個友元函式,那麼必須在友元宣告之外再專門對函式進行一次宣告。
通常把友元的宣告與類本身放置在同乙個標頭檔案中(類的外部)。
classxx
()//錯誤:f()沒有被宣告
voidg(
);voidh(
);};
void x::g(
)//錯誤:f()沒有被宣告
voidf(
);//宣告x中的f()函式
void x::h(
)//正確:現在f()的宣告在作用域中了
c 友元(筆記)
在程式裡,有些私有屬性,想讓類外特殊的一些函式或類進行訪問,這就需要用到友元的技術 友元的目的就是讓乙個函式或者類訪問另乙個類中私有成員 友元關鍵字 friend 友元的三種實現 class building public string m sittingroom private string m ...
C 筆記 繼承,友元
一 友元關係 友元關係不可繼承,base是基類,derive是派生類,f是base的友元,這麼說來,f不能訪問derive的private成員 是無誤的 但是還是不夠準確,假設base有乙個privata的virtual函式func derive繼承並重寫了此函式,那麼在基類的友元f中有如下 看似f...
C 筆記 友元函式
在某些情況下,允許特定的非成員函式訪問乙個類的私有成員,同時仍然阻止一般的訪問。友元機制允許乙個類將對其非公有成員的訪問權授予指定的函式或類。1.友元的宣告以關鍵字friend開始。2.只能出現在類定義的內部。3.可以出現在類中的任何地方,不是授予友元關係的那個類成員,所以不受其宣告出現部分的訪問控...