#include <iostream>
#include <Cmath>
using namespace std;
class CPoint
{private:
double x; // 横坐标
double y; // 纵坐标
public:
CPoint(double xx=0,double yy=0):x(xx),y(yy){}
double getx();
double gety();
double distance1(CPoint p) const;//成员函数声名
friend double distance2(CPoint &,CPoint &);//友元函数声名
};
double CPoint::getx()
{
return x;
}
double CPoint::gety()
{
return y;
}
double CPoint::distance1(CPoint p) const//成员函数
{
return sqrt((x-p.x)*(x-p.x)+(y-p.y)*(y-p.y));
}
//友元函数
double distance2(CPoint &p,CPoint &f)
{
return sqrt((p.x-f.x)*(p.x-f.x)+(p.y-f.y)*(p.y-f.y));
}
double distance3(CPoint &,CPoint &);//普通函数声名
double distance3(CPoint &p,CPoint &f) //普通函数
{
return sqrt((p.getx()-f.getx())*(p.getx()-f.getx())+(p.gety()-f.gety())*(p.gety()-f.gety()));
}
int main()
{
CPoint p1(4,8);
CPoint p2(6,8);
cout<<"成员函数计算为:"<< p1.distance1(p2)<<endl;
cout<<"友元函数计算为:"<< distance2(p1,p2)<<endl;
cout<<"普通函数计算为:"<< distance3(p1,p2)<<endl;
system("pause");
return 0;
}
运行结果:
感言:普通函数调用类用的点,不太顺利。。。