c++求两点的距离利用友元_【C++类和对象】计算两点间距离的两种方法
时间: 2024-03-07 18:46:32 浏览: 90
C++计算两点之间的距离(两种实现方式)
好的,我来为您解答。
首先,我们需要定义一个 `Point` 类,表示一个点的坐标。这个类可以有两个私有成员变量 `x` 和 `y`,分别表示横坐标和纵坐标。
然后,我们可以在 `Point` 类中定义一个公有成员函数 `distanceTo`,用于计算当前点和另一个点之间的距离。这个函数接受一个 `Point` 类型的参数,表示另一个点。函数的实现可以使用勾股定理,计算两点之间的距离。
接下来,我们可以使用友元函数来计算两个点之间的距离。友元函数是在类外部定义的函数,但可以访问类的私有成员。我们可以在 `Point` 类中声明一个友元函数 `distanceBetween`,用于计算两个点之间的距离。这个函数接受两个 `Point` 类型的参数,分别表示两个点。函数的实现可以直接调用 `distanceTo` 函数,计算出两个点之间的距离。
最后,在主函数中,我们可以创建两个 `Point` 对象,分别表示两个点,并调用 `distanceTo` 函数和 `distanceBetween` 函数,计算出两个点之间的距离。
下面是代码示例:
```cpp
#include <iostream>
#include <cmath>
using namespace std;
class Point {
private:
double x, y; // 点的坐标
public:
Point(double _x, double _y): x(_x), y(_y) {}
double distanceTo(Point p) {
return sqrt(pow(x - p.x, 2) + pow(y - p.y, 2));
}
friend double distanceBetween(Point p1, Point p2);
};
double distanceBetween(Point p1, Point p2) {
return p1.distanceTo(p2);
}
int main() {
Point p1(0, 0);
Point p2(3, 4);
cout << "The distance between (" << p1.distanceTo(p2) << ")" << endl;
cout << "The distance between (" << distanceBetween(p1, p2) << ")" << endl;
return 0;
}
```
运行结果:
```
The distance between (5)
The distance between (5)
```
另外,我们也可以将 `distanceBetween` 函数定义为 `Point` 类的静态成员函数,这样就不需要使用友元函数了。下面是代码示例:
```cpp
#include <iostream>
#include <cmath>
using namespace std;
class Point {
private:
double x, y; // 点的坐标
public:
Point(double _x, double _y): x(_x), y(_y) {}
double distanceTo(Point p) {
return sqrt(pow(x - p.x, 2) + pow(y - p.y, 2));
}
static double distanceBetween(Point p1, Point p2) {
return p1.distanceTo(p2);
}
};
int main() {
Point p1(0, 0);
Point p2(3, 4);
cout << "The distance between (" << p1.distanceTo(p2) << ")" << endl;
cout << "The distance between (" << Point::distanceBetween(p1, p2) << ")" << endl;
return 0;
}
```
运行结果:
```
The distance between (5)
The distance between (5)
```
阅读全文