類的私有成員只能被該類的成員函數和該類的friend函數訪問:類的保護成員只能被該類或者其派生類的成員函數和該類的friend函數訪問。
※插曲C++中成員限制符號的作用
private 限制本類的成員,只能被本類成員自己訪問
protected 限制本類的成員,只能被本類成員或繼承類成員訪問
public 開放本類的成員,內部外部都可以用
friend 向外部函數開放本類私有或保護成員
一個friend使用的例子:
class C{
//......
friend int f();// friend函數
//......
};
因爲f函數不是C的成員函數,所以f放在類的public,protected或者是private各個部分都是可以的。
friend函數不是類的成員卻可以訪問類的私有成員或者是保護成員,這個面向對象的設計思想是違背的,這樣可能會造成誤用。我們建議僅僅在重載操作符的時候使用。