C++两点间距离计算:友元函数与成员函数实现

需积分: 4 1 下载量 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)`调用成员函数,计算并输出两点之间的距离。 总结来说,两种方法都可以用来计算两点间的距离,友元函数直接访问类的私有数据,而成员函数则通过对象的公共接口间接操作。选择哪种方式取决于具体的编程需求,如是否需要保持封装、提高代码可维护性或简化函数调用等。友元函数适用于不需要改变类状态的情况,而成员函数更适合于需要在类内部逻辑中使用距离计算的场景。