两点之间距离计算
·
C++ 两点间距离计算程序讲解
这份代码通过面向对象的方式定义了 “点(Point)” 类,实现了计算平面直角坐标系中两点间距离的功能。下面从代码结构、核心知识点、运行逻辑三个维度详细讲解。
一、代码整体结构
代码分为三个核心部分:
- 头文件引入:提供输入输出、数学计算的基础功能;
Point类定义:封装点的坐标和距离计算逻辑;main函数:创建点对象、调用方法、输出结果。
二、逐段解析
1. 头文件与命名空间
cpp
运行
#include <iostream> // 输入输出流(cout、endl 等)
#include <cmath> // 数学库(sqrt 平方根函数)
using namespace std; // 简化 std:: 前缀,直接使用 cout、endl 等
<iostream>:必须引入才能使用cout输出内容、endl换行;<cmath>:提供sqrt()函数(计算平方根),是距离公式的核心;using namespace std;:C++ 标准库的内容默认在std命名空间下,这行代码避免了写std::cout、std::sqrt等冗余写法。
2. Point 类的定义
类是面向对象编程的核心,这里的 Point 类封装了 “点” 的属性和行为:
(1)私有成员(属性)
cpp
运行
private:
double x; // 点的横坐标
double y; // 点的纵坐标
private访问权限:确保坐标只能通过类的成员函数访问 / 修改,符合 “封装” 特性;double类型:支持小数坐标(如 (1.5, 2.8)),比int更通用。
(2)构造函数
cpp
运行
Point(double x = 0, double y = 0) : x(x), y(y) {}
- 作用:创建
Point对象时初始化x和y; - 带默认参数:如果创建对象时不传入坐标(如
Point p;),则默认坐标为 (0, 0); - 初始化列表
: x(x), y(y):直接初始化成员变量,比在函数体内赋值更高效(尤其对复杂类型)。
(3)距离计算成员函数
cpp
运行
double Distance(const Point& other) const {
double dx = x - other.x; // 横坐标差值
double dy = y - other.y; // 纵坐标差值
return sqrt(dx * dx + dy * dy); // 勾股定理计算距离
}
这是核心功能,重点解析:
- 函数参数
const Point& other:&引用传递:避免拷贝对象,提升效率;const:保证函数不会修改传入的other对象,符合编程规范;
- 函数末尾
const:表示该成员函数不会修改当前对象(this指向的对象)的成员变量(即x和y); - 距离公式:平面直角坐标系中,两点 (x1,y1) 和 (x2,y2) 的距离为 (x1−x2)2+(y1−y2)2,代码中
dx*dx等价于平方运算,sqrt()计算平方根。
(4)辅助打印函数
cpp
运行
void Print() const {
cout << "(" << x << ", " << y << ")" << endl;
}
- 作用:输出点的坐标,方便测试和查看结果;
const:同样保证不修改对象的x、y。
3. main 函数(程序入口)
cpp
运行
int main() {
// 定义两个点,调用构造函数初始化
Point p1(1, 2); // p1 坐标 (1,2)
Point p2(4, 6); // p2 坐标 (4,6)
// 计算距离:调用 p1 的 Distance 方法,传入 p2
double dist = p1.Distance(p2);
// 输出结果
cout << "点p1";
p1.Print();
cout << "点p2";
p2.Print();
cout << "两点间的距离为:" << dist << endl;
return 0;
}
- 执行流程:创建对象 → 调用
Distance计算距离 → 调用Print输出坐标 → 输出最终距离; - 计算验证:p1 (1,2) 和 p2 (4,6) 的横坐标差 3,纵坐标差 4,距离为 32+42=5,程序运行结果会输出
5。
三、核心知识点总结
- 类与对象:
Point是类(模板),p1、p2是对象(实例); - 封装:将坐标(属性)和距离计算 / 打印(行为)封装在类中,隐藏内部实现;
- const 修饰:
const引用参数、const成员函数,保证代码的安全性和可读性; - 数学公式:勾股定理在平面坐标中的应用;
- 构造函数默认参数:简化对象创建(支持无参、单参、双参初始化)。
四、运行结果
程序运行后会输出:
plaintext
点p1(1, 2)
点p2(4, 6)
两点间的距离为:5
五、扩展与优化建议
- 可以添加
SetX()、SetY()、GetX()、GetY()成员函数,灵活修改 / 获取坐标; - 重载
<<运算符,直接用cout << p1输出点坐标,替代Print()方法; - 支持三维点(添加
z坐标),修改距离公式为 (x1−x2)2+(y1−y2)2+(z1−z2)2。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐

所有评论(0)