友元函式的使用方法

彩神快三邀請碼是多少88886486發表於2021-02-14

我們都知道類中的私有成員,只有被類裡的成員函式訪問,在類外是不能訪問的。這體現了C++中類設計的封裝、隱蔽思想。是C++最基本的優點。

但如果偶爾有的時候,我們在類外又確實想訪問這些私有成員,就會變得麻煩很多,就處於既訪問不到又不能宣告為public型別的兩難處境。

而友元的出現就可以很好的解決這個問題。即把外部的函式宣告為友元型別,賦予它可以訪問類內私有成員的權利。來做到兩全其美。這就是友元的意義,從字面意思也可以看出來,像“朋友”一樣,開了一個綠色通道。

友元的物件,它可以是全域性的一般函式,也可以是其他類裡的成員函式,這種叫做友元函式。不僅如此,友元還可以是一個類,這種叫做友元類。

理解友元的意義和作用後,我們來看怎麼在C++中使用。

對於友元函式,只需要在類內對這個函式進行宣告,並在之前加上friend關鍵字。這個函式就具有了獨特的許可權,成為友元函式。

最後需要注意的是,友元並不屬於這個類本身,無論是友元函式還是友元類。都不能使用類內的this指標,同時也不可以被繼承,如同父親的朋友不一定是兒子的朋友這個道理。

下面,我們寫一個求兩點之間距離的程式陳旭:

include

include

using namespace std; class Point { private: double x; double y; public: Point(double a,double b) { x = a; y = b; } int GetPoint() { cout<<"("<

return sqrt(xx*xx+yy*yy);

} int main() { Point A(2.0,3.0); Point B(1.0,2.0); double dis; dis = Distance(A,B); cout<

大家可以觀察實現求兩點之間距離的函式為外部的一般函式,由於需要訪問類內的私有成員,所以我們把它在類內宣告成frined友元型別,見Point類內的最後一行。此時程式碼編譯無問題,正常輸出:

youyuan.png

可以看到測試結果,大家可以上機自行實驗,分別嘗試不宣告為friend型別觀察報錯結果。

相關文章