C++两点间距离计算:友元函数与成员函数实现
需积分: 4 140 浏览量
更新于2024-08-04
收藏 2KB TXT 举报
本文档主要介绍了在C++编程中如何计算两点之间的距离,提供了两种不同的实现方式:友元函数和成员函数。
1. 友元函数实现:
在C++中,友元函数(Friend Function)是一种特殊类型的函数,它可以直接访问类的私有成员,而无需成为类的成员。在这个例子中,`distance`函数被声明为`Point`类的友元,允许它直接访问类的内部变量`x_`和`y_`,从而计算两点间的距离。代码如下:
```cpp
friend double distance(const Point &p1, const Point &p2);
```
`distance`函数接收两个`Point`对象作为参数,计算它们横坐标(`dx = p1.x_ - p2.x_`)和纵坐标(`dy = p1.y_ - p2.y_`)的差,然后应用勾股定理(`std::sqrt(dx*dx + dy*dy)`)得到两点之间的距离。
2. 成员函数实现:
另一种实现方式是通过定义一个成员函数`distance_to`,它是一个`const`函数,意味着它可以安全地被非const对象调用,不会修改对象的状态。这个函数接受一个`const`引用作为参数,同样用于计算两点之间的距离,但没有直接访问类的私有数据,而是通过对象的公共接口获取坐标值。这样做的好处是保持了封装性,提高了代码的可读性和维护性。
```cpp
double distance_to(const Point &other) const {
double dx = x_ - other.x_;
double dy = y_ - other.y_;
return std::sqrt(dx * dx + dy * dy);
}
```
在`main`函数中,通过`p1.distance_to(p2)`调用成员函数,计算并输出两点之间的距离。
总结来说,两种方法都可以用来计算两点间的距离,友元函数直接访问类的私有数据,而成员函数则通过对象的公共接口间接操作。选择哪种方式取决于具体的编程需求,如是否需要保持封装、提高代码可维护性或简化函数调用等。友元函数适用于不需要改变类状态的情况,而成员函数更适合于需要在类内部逻辑中使用距离计算的场景。
2017-11-27 上传
2008-10-03 上传
点击了解资源详情
2023-06-06 上传
2023-05-20 上传
174 浏览量
213 浏览量
2014-12-19 上传
158 浏览量