成人app

友元函數的使用方法

點擊打開在線編譯器,邊學邊練

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

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

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

 

成人app友元的對象,它可以是全局的一般函數,也可以是其他類里的成員函數,這種叫做友元函數。不僅如此,友元還可以是一個類,這種叫做友元類。

 

成人app理解友元的意義和作用后,我們來看怎么在C++中使用。

對于友元函數,只需要在類內對這個函數進行聲明,并在之前加上friend關鍵字。這個函數就具有了獨特的權限,成為友元函數。

 

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

 

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

#include<iostream>
#include<math.h>
using namespace std;
class Point
{
    private:
        double x;
        double y;
    public:
        Point(double a,double b)
        {
            x = a;
            y = b;
        }
        int GetPoint()
        {
            cout<<"("<<x<<","<<y<<")";
            return 0;
        }
        friend double Distance(Point &a,Point &b);
};
//求兩點之間的距離
double Distance(Point &a,Point &b)
{
    double xx;
    double yy;
    xx = a.x-b.x;
    yy = a.y-b.y;
 
    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<<dis<<endl;
    return 0;
}

 

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

youyuan.png

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

 



本文固定URL:http://hnsaiyang.com/course/71

Dotcpp在線編譯      (登錄可減少運行等待時間)