编写程序,定义一个平面点“Point”类及计算两点之间距离“Distance”类,将“Distance”类定义为“Point”类的友元类;并在main()中计算任意两点的距离(保存在exp_308.cpp中)。
时间: 2023-09-11 08:07:43 浏览: 214
Java 编写Point类,构造方法,计算两个点之间的距离,键盘输入两个点,格式以“,”隔开,如:1,1即为(1,1)点。
5星 · 资源好评率100%
好的,下面是代码实现:
```cpp
#include <iostream>
#include <cmath>
using namespace std;
class Point; // 先声明Point类
class Distance { // 计算两点之间距离的类
public:
double getDistance(Point& p1, Point& p2); // 计算距离的成员函数
};
class Point { // 平面点类
private:
double x, y; // 点的坐标
public:
Point(double x, double y) { // 构造函数
this->x = x;
this->y = y;
}
friend double Distance::getDistance(Point& p1, Point& p2); // 将Distance类定义为Point类的友元类
};
double Distance::getDistance(Point& p1, Point& p2) { // 计算距离
double dx = p1.x - p2.x;
double dy = p1.y - p2.y;
return sqrt(dx * dx + dy * dy);
}
int main() {
Point p1(1, 2);
Point p2(3, 4);
Distance d;
cout << "两点之间的距离为:" << d.getDistance(p1, p2) << endl;
return 0;
}
```
这里定义了两个类,一个是平面点类 `Point`,一个是计算两点之间距离的类 `Distance`。在 `Point` 类中,定义了两个私有成员变量 `x` 和 `y`,分别表示点的横纵坐标。在 `Distance` 类中,定义了一个公有成员函数 `getDistance`,用于计算两个点之间的距离。为了能够访问 `Point` 类中的私有成员变量,将 `Distance` 类声明为 `Point` 类的友元类,并在 `getDistance` 函数中使用引用参数来传递 `Point` 类的对象。
在 `main` 函数中,创建两个 `Point` 类的对象 `p1` 和 `p2`,并创建一个 `Distance` 类的对象 `d`。然后调用 `d` 对象的 `getDistance` 函数,计算 `p1` 和 `p2` 两点之间的距离,并输出结果。
阅读全文