友元,打破類的隱藏和封裝,方便訪問與修改,提高效率
1,友元函數:直接在函數前加friend,並且沒有this->屬性(非類成員函數)
函數與存放位置無關,直接調用,類似於使用類空間,直接只用函數名調用。
2,友元類:類前加上friend,沒有交換性和傳遞性,不能互爲友元,
數據傳遞:
a>,其中靜態變量常用於類與類的數據傳遞
b>,直接引用類,實現數據傳遞
3,友元成員函數:類B中,類A函數前加上friend
類A的某個函數爲類B的友元函數,那麼A的這個函數可以直接訪問B的成員
常見問題:
1,友元函數,一般聲明在類中,定義在類外,
但是如果非要定義要在類中:類域內定義的友元函數調用時必須具有該類類型的實參,即friend void f( A& a ) {}
2,當兩個類有友元關係時,其定義的順序會影響編譯,就是說代碼邏輯沒問題,編譯會報錯。
調節順序,一般是友元函數的定義放在最後。
(友元可以直接訪問靜態變量)