#include <iostream>
#include <Cmath>
using namespace std;
class Cpoint
{
public:
Cpoint(double xx=0,double yy=0):x(xx),y(yy){}
void lenth1(Cpoint cp); //display1是成员函数
friend void lenth2(Cpoint cp1,Cpoint cp2); //display2是友元函数
int getx(){return x;}
int gety(){return y;}
private:
double x;
double y;
};
void Cpoint::lenth1(Cpoint cp) //成员函数display1的实现,dispaly1前加Time::
{
double l=sqrt((cp.x-x)*(cp.x-x)+(cp.y-<img src="https://img-blog.youkuaiyun.com/20160415212605387" alt="" />y)*(cp.y-y));
cout<<"两点距离为:"<<l<<endl;
}
void lenth2(Cpoint cp1,Cpoint cp2) //友元函数dispaly2的实现,不加Time::,友元并不是类的成员
{
double l=sqrt((cp1.x-cp2.x)*(cp1.x-cp2.x)+(cp1.y-cp2.y)*(cp1.y-cp2.y));
cout<<"两点距离为:"<<l<<endl;
//虽然不是类的成员函数,却可以用t.hour的形式直接访问私有数据成员——这就是友元
}
void lenth3(Cpoint cp1,Cpoint cp2) //display3是一般函数,dispaly3前不加Time::
{
double l=sqrt((cp1.getx()-cp2.getx())*(cp1.getx()-cp2.getx())+(cp1.gety()-cp2.gety())*(cp1.gety()-cp2.gety()));
cout<<"两点距离为:"<<l<<endl;
//不能直接访问,只能用公共接口t.getHour()形式访问私有数据成员
}
int main()
{
Cpoint cp1,cp2(1,1);
cp1.lenth1(cp2); //成员函数这样调用:对象名.函数名()
lenth2(cp1,cp2); //友员函数的调用和一般函数无异(但实现中可以不同)
lenth3(cp1,cp2); //一般函数的调用
return 0;
}