以下程序如果不声明友元函数,怎么修改?

来源:百度知道 编辑:UC知道 时间:2024/05/24 17:08:02
以下程序如果不声明友元函数,用类名来限定的方法(Point:: + 函数名),该怎么修改?

#include <iostream>
#include <cmath>
using namespace std;
class Point
{
public:
Point(int xx=0,int yy=0) {X=xx;Y=yy;}
int GetX() {return X;}
int GetY() {return Y;}
friend float fDist(Point&a,Point&b);
private:
int X,Y;

};
float fDist(Point&p1,Point&p2)
{
double x=double(p1.X-p2.X);
double y=double(p1.Y-p2.Y);
return float(sqrt(x*x+y*y));
}

int main()
{
Point myp1(1,1),myp2(4,5);
cout<<"The distance is:";
cout<<fDist(myp1,myp2)<<endl;
}

#include <iostream>
#include <cmath>
using namespace std;
class Point
{
public:
Point(int xx=0,int yy=0) {X=xx;Y=yy;}
int GetX() {return X;}
int GetY() {return Y;}
//friend float fDist(Point&a,Point&b);
private:
int X,Y;

};

float fDist(Point&p1,Point&p2)
{
double x=double(p1.GetX()-p2.GetX());//这里调用成员函数得到私有成员
double y=double(p1.GetY()-p2.GetY());//这里调用成员函数得到私有成员
return float(sqrt(x*x+y*y));
}

int main()
{
Point myp1(1,1),myp2(4,5);
cout<<"The distance is:";
cout<<fDist(myp1,myp2)<<endl;
}

我理解你的意思是这样:
#include <iostream>
#include <cmath>
using namespace std;
class Point
{
public:
Point(int xx=0,int yy=0) {X=xx;Y=yy;}
int GetX() {return X;}
int GetY() {return Y;}
float fDist(Point&a,Point&b); //去掉friend,表示fDst()函数是成员函数
private