编写一个程序,设计一个点类Point,求两个点之间的距离。要求分别用友元函数和成员函数来实现。
时间: 2023-09-05 21:13:17 浏览: 194
好的,这是一个很好的编程问题。我们可以先在 Point 类中定义成员函数 calcDistance() 来计算两点之间的距离。代码可能如下:
```cpp
class Point {
private:
double x, y;
public:
Point(double _x, double _y) : x(_x), y(_y) {}
double calcDistance(const Point& other) const {
double dx = x - other.x;
double dy = y - other.y;
return sqrt(dx*dx + dy*dy);
}
};
```
使用成员函数计算距离的示例如下:
```cpp
Point p1(1.0, 2.0);
Point p2(3.0, 4.0);
double dist = p1.calcDistance(p2);
```
接下来我们可以定义一个友元函数 distance() 来计算两点之间的距离。这个函数不需要成员函数中那样需要传递一个 Point 对象的引用,而是直接传递两个 Point 对象的引用即可。代码示例如下:
```cpp
class Point {
private:
double x, y;
public:
Point(double _x, double _y) : x(_x), y(_y) {}
friend double distance(const Point& p1, const Point& p2) {
double dx = p1.x - p2.x;
double dy = p1.y - p2.y;
return sqrt(dx*dx + dy*dy);
}
};
```
使用友元函数计算两点之间距离的示例如下:
```cpp
Point p1(1.0, 2.0);
Point p2(3.0, 4.0);
double dist = distance(p1, p2);
```
希望这个回答对你有帮助。
阅读全文