類的友元函數在類范圍之外定義,但是有權訪問類的private成員。一個函數或是整個類都可以聲明為另一個類的友元。
要將一個函數聲明為類的友元,就要在類定義中的函數原型前加上friend關鍵字。如果要將類ClassTwo聲明為ClassOne的友元,那就要在ClassOne的定義中做如下聲明:
friend class classTwo;
需要注意的幾點:
1、 盡管類定義中有友元函數的原型,但是友元仍不是成員函數。
2、 private、protected、public的成員訪問符號與友元關系的聲明無關,所以友元關系聲明可以放在類定義中的任何地方。
3、 不要在友元關系的聲明前面放上任何成員訪問說明符。
4、 友元關系是‘給予’的,不是‘索取’的,即要讓B成為A 的友元,那麼A就要顯式聲明B為自己的友元。
5、 友元關系不對稱,也不能傳遞。即如果A是B的友元,B是C的友元,那麼並不能說B就是A的友元(不對稱),也不能說A就是C的友元(不傳遞)。
摘自:http://www.limou.net/?p=412