用cpp设计一个点类,并求两点之间的距离
时间: 2023-05-29 13:07:41 浏览: 55
以下是一个简单的点类的实现,并计算两个点之间的距离:
```cpp
#include <cmath>
class Point {
public:
Point(double x, double y) : x_(x), y_(y) {}
double distanceTo(const Point& other) const {
double dx = x_ - other.x_;
double dy = y_ - other.y_;
return std::sqrt(dx * dx + dy * dy);
}
private:
double x_;
double y_;
};
int main() {
Point p1(0, 0);
Point p2(3, 4);
double distance = p1.distanceTo(p2);
return 0;
}
```
在这个示例中,我们定义了一个点类,它包含了两个私有成员变量:`x_`和`y_`,它们表示点的横坐标和纵坐标。我们还实现了一个公共成员函数`distanceTo`,它接受另一个点作为输入参数,计算与当前点之间的距离。
在主函数中,我们创建了两个点`p1`和`p2`,并计算它们之间的距离。
相关问题
编写一个程序,设计一个点类Point,求两个点之间的距离。要求分别用友元函数和成员函数来实现。
好的,这是一个很好的编程问题。我们可以先在 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);
```
希望这个回答对你有帮助。
设计一个程序,利用友元函数计算上题中平面上两点之间的距离
好的,我可以为你设计一个求平面上两点距离的程序,利用友元函数实现。以下是示例代码:
```cpp
#include <iostream>
#include <cmath>
using namespace std;
class Point {
private:
double x, y;
public:
Point(double a = 0, double b = 0) : x(a), y(b) {}
friend double distance(Point p1, Point p2);
};
double distance(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(0, 0);
Point p2(3, 4);
cout << "Distance between (" << p1.x << "," << p1.y << ") and (" << p2.x << "," << p2.y << ") is " << distance(p1, p2) << endl;
return 0;
}
```
在上述程序中,我们定义了一个 `Point` 类,其中包含了两个私有变量 `x` 和 `y` 表示点的坐标。我们利用 `friend` 关键字声明了一个友元函数 `distance`,用于计算两个点之间的距离。在 `main` 函数中,我们创建了两个 `Point` 类型的对象 `p1` 和 `p2`,并且调用了 `distance` 函数,输出了两点之间的距离。
注意,在 `distance` 函数中,我们可以访问 `Point` 类的私有成员变量 `x` 和 `y`,因为我们已经在 `Point` 类中声明了 `distance` 函数是 `Point` 类的友元函数。这样,我们就可以通过友元函数计算平面上两点之间的距离了。