3-7 类的友元函数的应用
Time Limit: 1000MS
Memory Limit: 65536KB
Problem Description
通过本题目的练习可以掌握类的友元函数的定义和用法
要求设计一个点类Point,它具有两个double型的数据成员x,y。为该类设计构造函数。并为其添加一个友元函数用于计算并输出两点间的距离;再添加一个输出成员函数用于输出点的信息。
并编写主函数,实现以下的输入输出内容。
Input
4个double型的数,中间用一个空格间隔。
Output
输出数据共3行,前两行用于显示要求距离的两个点的信息,第三行显示两点的距离。
Example Input
5 6 2 3
Example Output
The first point is the coordinate:X=5,Y=6 The second point is the coordinate:X=2,Y=3 The distance between the two points is:4.24264
Hint
Author
黄晶晶
#include <bits/stdc++.h>
using namespace std;
class p
{
private:
double x;double y;
public:
p(double xx=0,double yy=0)
{
x=xx;y=yy;
}
void show1()
{
cout<<"The first point is the coordinate:X="<<x<<','<<"Y="<<y<<endl;
}
void show2()
{
cout<<"The second point is the coordinate:X="<<x<<','<<"Y="<<y<<endl;
}
friend void dis(p&p1,p&p2)
{
cout<<"The distance between the two points is:"<<sqrt((p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y))<<endl;
}
};
/*在类外声明:void dis(p&p1,p&p2)*/
int main()
{
double a,b,c,d;
cin>>a>>b>>c>>d;
p p1(a,b);
p1.show1();
p p2(c,d);
p2.show2();
dis(p1,p2);
return 0;
}
友元:通过讲一个模块声明为另一个模块的友元,让它可以使用另一个模块中原本是隐藏的信息。为了确保数据的完整性,以及数据封装和隐藏的原则,请尽量不要使用友元
![0](https://i-blog.csdnimg.cn/blog_migrate/76fe11a32df7cc04150e0feef538caf6.png)
![0](https://i-blog.csdnimg.cn/blog_migrate/20ef3de6b5e94e02f0be3a72f34ee728.png)
![0](https://i-blog.csdnimg.cn/blog_migrate/f0317227a1996c631e6feb6cf36dab37.png)
![0](https://i-blog.csdnimg.cn/blog_migrate/81f4b17e3d5b7c8c6c9f4cdeb137d492.png)
![0](https://i-blog.csdnimg.cn/blog_migrate/20d0bc088d81ccfb1aecc6d75738b0c7.png)
![0](https://i-blog.csdnimg.cn/blog_migrate/790225ab68d6f0e925794e5dc79e1d69.png)
![0](https://i-blog.csdnimg.cn/blog_migrate/4b0275a23cd06970eca06e212fbba0d9.png)