C++中,為什麼友元函式可以在類中宣告和定義,但是卻不是這個類的函式成員?
作者:由 小蔡蔡 發表于 娛樂時間:2022-09-07
#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這個函式無法被類的物件以成員函式的形式呼叫,也無法作為類的靜態函式呼叫,只能作為全域性函式在被呼叫。一個在類中完成宣告定義的函式是怎麼變成一個全域性函式的呢?