您當前的位置:首頁 > 娛樂

C++中,為什麼友元函式可以在類中宣告和定義,但是卻不是這個類的函式成員?

作者:由 小蔡蔡 發表于 娛樂時間:2022-09-07

C++中,為什麼友元函式可以在類中宣告和定義,但是卻不是這個類的函式成員?小蔡蔡2022-09-07 11:05:09

#include

#include

using namespace std;

class Point

{

public:

Point(int xx = 0, int yy = 0)

{

x = xx;

y = yy;

}

friend double dist(Point &p1, Point &p2)

{

double x = p1。x - p2。x;

double y = p1。y - p2。y;

return double(x * x + y * y);

}

private:

int x, y;

};

int main()

{

Point p1(1, 1);

Point p2(1, 2);

cout << dist(p1, p2) << endl;

}

上面的程式碼是在類體中實現對函式dist的定義的,並沒有出現報錯。

其他問題中有些回答說friend所修飾的宣告只是一個許可權的宣告,必須再在函式體外進行一次宣告才算對函式有了正式的宣告。

但如果像這樣把函式的定義都寫在類內的話,又要怎麼解釋呢?

另外,dist這個函式無法被類的物件以成員函式的形式呼叫,也無法作為類的靜態函式呼叫,只能作為全域性函式在被呼叫。一個在類中完成宣告定義的函式是怎麼變成一個全域性函式的呢?

標簽: point  函式  P1  P2  int