C++面向对象编程:Point、Line、Rectangle、Circle类设计与实现
1. 引言在C面向对象编程中类的设计是核心基础。本文将通过一个完整的示例展示如何设计Point点、Line线段、Rectangle长方形和Circle圆四个类并实现它们的基本功能。这些类之间存在组合关系体现了面向对象编程的封装、组合和代码复用思想。2. Point类设计Point类表示二维平面上的一个点包含x和y坐标。这是所有其他几何图形的基础。// 坐标点类 class Pointer { private: double xpos; // x坐标 double ypos; // y坐标 public: // 带默认形参0的设置函数 void setX(double x 0) { xpos x; } void setY(double y 0) { ypos y; } // const只读成员函数获取坐标 double getX() const { return xpos; } double getY() const { return ypos; } };设计要点使用private封装坐标数据确保数据安全设置函数带默认参数方便使用获取函数声明为const保证不修改对象状态3. Line类设计Line类表示一条线段由两个Point对象组成组合关系。// 线段类包含两个Point成员组合Line由两个Point组成 class Line { private: Pointer a; // 起点 Pointer b; // 终点 public: // 重载setA1.双参数赋值 2.对象引用赋值 void setA(double x, double y) { a.setX(x), a.setY(y); } void setA(const Pointer at) { a at; } // 重载setB两种传参方式 void setB(double x, double y) { b.setX(x), b.setY(y); } void setB(const Pointer bt) { b bt; } // 函数重载普通版(返回值拷贝)、const常函数版(返回常引用) Pointer getA() { return a; } // 一般版本 const Pointer getA() const { return a; } // 优化版本 Pointer getB() { return b; } const Pointer getB() const { return b; } // const函数计算两点间线段长度勾股定理 double length() const { double dx a.getX() - b.getX(); double dy a.getY() - b.getY(); return sqrt(dx * dx dy * dy); } };设计要点使用组合关系Line包含两个Point对象函数重载提供多种参数类型的设置函数const成员函数length()不修改对象状态返回常引用避免不必要的对象拷贝4. Rectangle类设计Rectangle类表示长方形由左下角和右上角两个Point构成。// 长方形类左下角右上角两个Point构成矩形 class 长方形 { private: Pointer leftDown; // 左下角坐标点 Pointer rightUp; // 右上角坐标点 public: // 设置矩形两个顶点 void setData(double x1, double y1, double x2, double y2) { leftDown.setX(x1); leftDown.setY(y1); rightUp.setX(x2); rightUp.setY(y2); } // 获取长、宽 double getW() const { return fabs(rightUp.getX() - leftDown.getX()); } double getH() const { return fabs(rightUp.getY() - leftDown.getY()); } // 面积 double getArea() const { return getW() * getH(); } // 周长 double getPerimeter() const { return 2 * (getW() getH()); } };5. Circle类设计Circle类表示圆形由圆心Point和半径组成。// 圆形类圆心Point半径 class 圆 { private: Pointer center; // 圆心坐标 double r; // 半径 public: // 设置圆心和半径 void setData(double cx, double cy, double rad) { center.setX(cx); center.setY(cy); r rad; } // 面积 πr² double getArea() const { const double PI 3.1415926; return PI * r * r; } // 周长 2πr double getPerimeter() const { const double PI 3.1415926; return 2 * PI * r; } };6. 主函数测试下面是完整的测试代码展示如何使用这些类#include iostream #include cmath using namespace std; // 包含上述所有类的定义... int main() { // 1.测试长方形左下(1,1) 右上(4,5) → 宽3 高4 长方形 rect; rect.setData(1, 1, 4, 5); cout 长方形宽 rect.getW() 高 rect.getH() endl; cout 长方形面积 rect.getArea() 周长 rect.getPerimeter() endl; // 2.测试圆形圆心(2,2) 半径3 圆 circle; circle.setData(2, 2, 3); cout 圆形面积 circle.getArea() 周长 circle.getPerimeter() endl; // 3.测试Point和Line Pointer p1; p1.setX(1.2); p1.setY(3.4); cout 点坐标( p1.getX() , p1.getY() ) endl; Line line; line.setA(0, 0); line.setB(3, 4); cout 线段长度 line.length() endl; // 结果5 return 0; }7. 面向对象设计原则总结1. 封装性所有数据成员都声明为private通过公有成员函数访问。2. 组合关系Line、Rectangle、Circle都包含Point对象体现了has-a关系。3. 代码复用基于Point类构建更复杂的几何图形避免重复代码。4. 接口设计提供清晰的公有接口隐藏实现细节。5. const正确性不修改对象状态的函数都声明为const。8. 扩展思考可以进一步扩展这个设计添加Shape基类定义统一的接口如getArea()、getPerimeter()实现多态通过基类指针管理不同几何图形添加移动、旋转、缩放等变换功能实现图形相交检测算法添加文件序列化功能保存和加载图形数据

相关新闻

大模型 API 的范式转移:从 Chat Completions 到 Responses API

大模型 API 的范式转移:从 Chat Completions 到 Responses API

引言 2025 年 3 月,OpenAI 正式推出 Responses API。一年后的今天,它已成为构建 AI Agent 的首选接口。2026 年 3 月,OpenAI 进一步扩展了 Responses API,加入 Shell 工具和托管容器工作空间。与此同时,Assistants API…

2026/8/21 9:44:24 阅读更多 →
为AI智能体注入人格与情绪:提升多智能体协作效率的工程实践

为AI智能体注入人格与情绪:提升多智能体协作效率的工程实践

1. 从代码到“同事”:当AI智能体开始拥有个性与情绪 最近在折腾一个多智能体协作的软件项目,遇到了一个挺有意思的瓶颈。我们团队设计了一个由多个LLM驱动的智能体(Agents)组成的“虚拟软件团队”,分工明确&#xff1a…

2026/8/21 9:43:24 阅读更多 →
物理世界模型CurrentWorld-0:从多模态感知到物理常识推理的范式转移

物理世界模型CurrentWorld-0:从多模态感知到物理常识推理的范式转移

上周,一个朋友发来一条消息,问我有没有关注一个叫“CurrentWorld-0”的新模型。他说,这玩意儿号称是“全球首个跨本体、跨视角、多模态物理世界模型”,听起来很唬人,但点进去一看,全是“跨模态对齐”、“统…

2026/8/21 9:43:24 阅读更多 →

最新新闻

从零实现BLDC无感方波驱动:SguanESC算法库详解与STM32实战

从零实现BLDC无感方波驱动:SguanESC算法库详解与STM32实战

深夜,当室友的鼾声此起彼伏,我却对着电脑屏幕上的示波器波形和满屏的C代码发呆。一个困扰了我好几天的无刷直流电机(BLDC)驱动问题,让我的暑期实习项目卡在了原地。市面上的电调(ESC)要么是闭源…

2026/8/21 12:43:52 阅读更多 →
基于SSM的医院招聘考试管理系统(毕业设计项目源码+文档)

基于SSM的医院招聘考试管理系统(毕业设计项目源码+文档)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/21 12:43:52 阅读更多 →
基于微信小程序的校园资讯共享平台系统(毕业设计项目源码+文档)

基于微信小程序的校园资讯共享平台系统(毕业设计项目源码+文档)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/21 12:43:52 阅读更多 →
AbletonOSC触发Clip与Scene:现场演出编排的快速上手指南

AbletonOSC触发Clip与Scene:现场演出编排的快速上手指南

AbletonOSC触发Clip与Scene:现场演出编排的快速上手指南 【免费下载链接】AbletonOSC Control Ableton Live via Open Sound Control (OSC) 项目地址: https://gitcode.com/gh_mirrors/ab/AbletonOSC AbletonOSC 是一个让 Ableton Live 通过 OSC(…

2026/8/21 12:43:52 阅读更多 →
LLM/VLM智能体如何革新芯片物理设计:从基准测试到架构实践

LLM/VLM智能体如何革新芯片物理设计:从基准测试到架构实践

1. 项目概述:当大模型智能体遇上芯片物理设计 最近在芯片设计圈子里,一个名为“PDAGENT-BENCH”的项目讨论度开始升温。乍一看这个标题,它融合了当下最热门的“LLM/VLM Agent”和传统且硬核的“VLSI Physical Design”(超大规模集…

2026/8/21 12:43:52 阅读更多 →
Harness Agent:AI智能体编排框架入门与实战指南

Harness Agent:AI智能体编排框架入门与实战指南

这次我们来看一个名为Harness Agent的项目。对于关注AI应用开发、自动化流程和智能体(Agent)落地的开发者来说,这是一个值得关注的工具。它旨在简化AI智能体的构建、部署和管理流程,让开发者能更专注于业务逻辑,而非底…

2026/8/21 12:42:51 阅读更多 →

日新闻

机场边检旅客定位系统国产化白皮书:算法、硬件、底座平台全程自主

机场边检旅客定位系统国产化白皮书:算法、硬件、底座平台全程自主

前言随着国家数字基础设施信创替代、关键技术自主可控战略持续深化,口岸智慧安防、边检智能管控领域正全面进入国产化、自主化、安全可控升级周期。当前国内机场边检旅客识别与定位体系长期依赖国外商用视觉算法、进口成像硬件、闭源通用计算平台,存在核…

2026/8/21 0:00:42 阅读更多 →
别再把“数字孪生”当空间智能了!镜像视界揭开四维时空的真正面纱

别再把“数字孪生”当空间智能了!镜像视界揭开四维时空的真正面纱

别再把“数字孪生”当空间智能了!镜像视界揭开四维时空的真正面纱当下数字化建设浪潮中,很多项目将三维可视化、视频贴图叠加的数字孪生等同于空间智能。传统数字孪生更多停留在三维场景复刻,擅长把物理世界“画出来、展示出来”,…

2026/8/21 0:00:42 阅读更多 →
105、车载温度范围-40°C到85°C的影像质量一致性——ISP参数温漂补偿与产线标定策略

105、车载温度范围-40°C到85°C的影像质量一致性——ISP参数温漂补偿与产线标定策略

105、车载温度范围-40C到85C的影像质量一致性——ISP参数温漂补偿与产线标定策略 去年冬天在北方某车厂做A样评审,凌晨四点的黑河试验场,零下三十三度。客户拿了一台冷启动的车,中控屏上倒车影像全是雪花噪点,暗部细节直接糊成一片。我第一反应是sensor温度没上来,暗电流…

2026/8/21 0:00:42 阅读更多 →

周新闻

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

如果你是一名开发者,最近可能已经感受到了AI大模型正在从“玩具”变成“生产力工具”的强烈信号。从代码补全到智能Agent,从本地部署到云端API,我们正处在一个技术栈快速重构的节点。然而,面对层出不穷的模型、框架和工具&#xf…

2026/8/21 3:21:33 阅读更多 →
工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/21 0:02:09 阅读更多 →
【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

2026/8/21 6:07:56 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/20 6:11:08 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/20 21:46:49 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/21 0:14:22 阅读更多 →