两个吃奶一个添下面视频_人妻第一页香蕉网_欧美xxxx少妇_妺妺窝人体色www婷婷

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


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


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


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


理解友元的意義和作用后,我們來看怎么在C++中使用。對于友元函數(shù),只需要在類內(nèi)對這個函數(shù)進行聲明,并在之前加上friend關鍵字。這個函數(shù)就具有了獨特的權限,成為友元函數(shù)。


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


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

#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;
}


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

C++友元函數(shù)


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


點贊(1)

C語言網(wǎng)提供由在職研發(fā)工程師或ACM藍橋杯競賽優(yōu)秀選手錄制的視頻教程,并配有習題和答疑,點擊了解:

一點編程也不會寫的:零基礎C語言學練課程

解決困擾你多年的C語言疑難雜癥特性的C語言進階課程

從零到寫出一個爬蟲的Python編程課程

只會語法寫不出代碼?手把手帶你寫100個編程真題的編程百練課程

信息學奧賽或C++選手的 必學C++課程

藍橋杯ACM、信息學奧賽的必學課程:算法競賽課入門課程

手把手講解近五年真題的藍橋杯輔導課程

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