用友元函数设计点类求两点之间的距离

该程序展示了如何利用C++的友元函数设计一个点类,计算两个点之间的欧氏距离。通过友元函数`line`,可以访问类`CPoint`的私有成员,实现横纵坐标的差值计算并返回距离。在`main`函数中创建了两个点对象,并输出了它们之间的距离。
/* 

 *Copyright (c) 2016,烟台大学计算机学院 

 *All rights reserved. 

 *文件名称:zyq.cpp 

 *作    者:赵彦庆 

 *完成日期:2016年4月13日 

 *版 本 号:v1.0 

 * 

 *问题描述:用友元函数设计点类求两点之间的距离 

 *输入描述: 

 *程序输出:两点间距离 

 */  

#include<iostream>  

#include<cmath>  

using namespace std;  

  

class CPoint  

{  

private:  

    double x;  // 横坐标  

    double y;  // 纵坐标  

 public:  

    CPoint(double xx=0,double yy=0):x(xx),y(yy){}  

    double  getx(){return x;}  

    double  gety(){return y;}  

    friend double line(CPoint &p1,CPoint &p2);  //友元函数的声明  

  

};  

  

/* 

class Line 

{ 

public: 

    Line(CPoint xp1,CPoint xp2); 

    Line (Line &l); 

    double getlen(){return len;} 

private: 

    CPoint p1,p2; 

    double len; 

}; 

*/  

double line(CPoint &p1,CPoint &p2)  

{  

    double x=p1.x-p2.x;  

    double y=p1.y-p2.y;  

    return sqrt(x*x+y*y);  

}  

int main()  

{  

    CPoint p1(1,1),p2(4,6.2);  

    // Line line(
### C++ 友元函数计算两点距离的实现 在 C++ 中,友元函数可以访问的私有成员,因此可以通过定义友元函数来实现计算两点之间距离。以下是一个完整的实现示例: ```cpp #include <iostream> #include <cmath> // 包含数学库以使用 sqrt 函数 using namespace std; class Point { public: // 构造函数 Point(int xx = 0, int yy = 0) : X(xx), Y(yy) {} // 获取 X 和 Y 的值 int GetX() const { return X; } int GetY() const { return Y; } // 声明友元函数 friend float Distance(const Point& a, const Point& b); private: int X, Y; // 私有成员变量 }; // 定义友元函数实现两点距离的计算 float Distance(const Point& p1, const Point& p2) { double deltaX = static_cast<double>(p1.X - p2.X); // 计算 X 轴差值 double deltaY = static_cast<double>(p1.Y - p2.Y); // 计算 Y 轴差值 return static_cast<float>(sqrt(deltaX * deltaX + deltaY * deltaY)); // 使用勾股定理计算距离[^1] } int main() { Point p1(1, 1), p2(4, 5); // 定义两个对象 cout << "The distance between points is: " << Distance(p1, p2) << endl; // 输出两点间的距离 return 0; } ``` #### 实现说明 1. **定义**:`Point` 包含两个私有成员变量 `X` 和 `Y`,分别表示的坐标。通过构造函数初始化这些值。 2. **友元函数声明**:在中使用 `friend` 关键字声明友元函数 `Distance`,使其能够访问的私有成员。 3. **友元函数实现**:`Distance` 函数接受两个 `Point` 对象作为参数,计算它们之间的欧几里得距离,并返回结果。 4. **主函数调用**:在 `main` 函数中创建两个 `Point` 对象并调用 `Distance` 函数,输出两点间的距离。 此代码展示了如何通过友元函数直接访问的私有成员来完成任务[^3]。 #### 注意事项 - 使用 `static_cast` 将整数转换为浮数以确保计算精度[^4]。 - 在实际应用中,可以进一步优化代码结构或添加异常处理逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值