小学生学C++编程语法知识(为什么 class 需要封装?)

发布时间:2026/9/21 22:30:32

小学生学C++编程语法知识(为什么 class 需要封装?) C面向对象核心为什么 class 需要封装同学们上节课我们学习了struct 和 class 的区别我们知道class默认private也就是自己的数据别人不能随便修改。那么问题来了为什么 C 要设计 private为什么不让所有变量都 public想改就改呢这就是今天要学习的核心封装Encapsulation一、先看一个没有封装的世界假设我们写一个学生类class Student { public: string name; int score; };使用Student s; s.name小明; s.score95;看起来很方便。但是问题来了如果有人写s.score-100;或者s.score1000;怎么办学生成绩应该0 ~ 100但是现在-100 1000都可以。程序不会报错。为什么因为score是public公开的。任何人都可以改。二、生活中的例子银行卡假设银行卡这样设计class BankCard { public: double money; };然后BankCard card; card.money1000000;任何人都可以card.money999999999;这显然不合理。银行账户余额不能让别人直接修改。所以真实世界设计银行卡外面只能存钱取钱查询余额但是内部余额必须保护。这就是封装三、什么是封装一句话把重要的数据隐藏起来只允许通过规定的方法访问。英文Encapsulation它包含两个动作1. 隐藏数据使用private2. 提供接口使用public例如class Student { private: int score; public: void setScore(int x) { scorex; } int getScore() { return score; } };现在score 藏起来了。外面不能s.score100;错误。必须s.setScore(100);四、private到底有什么作用我们来看class Student { private: int score; };private表示只有自己可以访问比如类里面void test() { score100; }可以。但是外面Student s; s.score100;不可以。可以想象private 是房间里面的保险箱。public 是房间门口的按钮。别人不能直接打开保险箱。只能按按钮。五、getter 和 setter 是什么很多同学第一次看到get set不知道是什么意思。其实非常简单getterget获取作用读取数据。例如int getScore() { return score; }意思把成绩告诉外面。setterset设置作用修改数据。例如void setScore(int x) { scorex; }意思修改成绩。所以函数作用getterget读取setterset修改六、为什么不直接访问要绕一圈有同学可能问老师s.score不是很方便吗为什么s.setScore(90);这么麻烦答案因为我们可以增加规则例如成绩必须0~100settervoid setScore(int x) { if(x0 x100) { scorex; } else { cout成绩错误endl; } }现在s.setScore(150);输出成绩错误程序安全了。七、封装最大的价值控制修改看两个程序没封装student.score-999;任何地方随便改。后果程序容易出错。有封装student.setScore(-999);进入if检查。错误被挡住。所以封装不是为了麻烦程序员。而是为了让程序更安全、更容易维护。八、封装和游戏角色的关系比如游戏英雄class Hero { private: int hp; public: void attack(); void heal(); };血量hp不能直接改。否则玩家hp999999游戏就坏了。所以只能攻击attack()回血heal()九、public、private、protected 三兄弟C 有三个权限1. public公开别人可以访问public: int age;像学校公告。2. private私有只有自己可以访问private: int password;像自己的密码。3. protected保护以后学习继承时使用。现在可以简单理解给自己的孩子使用。十、一个例子设计一个银行账户#includeiostream using namespace std; class Account { private: double money; public: Account() { money0; } void deposit(double x) { if(x0) { moneyx; } } double getMoney() { return money; } }; int main() { Account a; a.deposit(100); couta.getMoney(); return 0; }输出100注意外面不能a.money1000000;因为money 是私有的。十一、封装和结构体有什么关系回忆structstruct Student { int score; };默认public所以s.score100;可以。classclass Student { int score; };默认private所以不能直接访问。但是两者都可以封装。例如structstruct Student { private: int score; };也是合法的。十二、信奥竞赛需要学封装吗学习 class 的意义在于培养大型程序设计思想软件工程能力AI时代编程能力未来写游戏App人工智能项目封装非常重要。十三、本节课总结记住下面这句话封装就是把数据藏起来把操作方法留下来。关键词概念作用private保护数据public提供服务getter读取数据setter修改数据最终目标让对象自己管理自己而不是让外部随便破坏。
延伸阅读

更多相关文章

2026/9/19 10:28:23

Ubuntu 22.04 VMware共享文件夹挂载失败:vmhgfs-fuse完整解决方案

1. 问题场景与核心痛点如果你正在用VMware Workstation或Fusion跑Ubuntu 22.04,并且像我一样,习惯在虚拟机和宿主机之间设置一个共享文件夹来传文件、共享代码,那你大概率踩过这个坑:在Ubuntu的/mnt/hgfs目录下,那个你…

2026/9/19 4:37:09

智能体SDK开发指南:从核心能力到工程实践

这次我们来看一个面向开发者的智能体 SDK。这个项目的核心愿景很直接:让开发者能够像构建“活对话”一样,创作出具有动态交互能力的智能体。它不是另一个复杂的 AI 框架,而是试图通过一套精心设计的 SDK,将智能体的开发体验变得直…

2026/9/20 0:44:23

基于Docker Compose构建高可用Elasticsearch集群:从零到生产级部署指南

1. 引言随着微服务架构、云原生和可观测性理念的普及,Elasticsearch 作为一款分布式搜索和分析引擎,已经成为日志分析、全文检索、安全监控等场景的核心基础设施。然而,在生产环境中手把手搭建一个高可用的 Elasticsearch 集群并非易事&#…

2026/9/21 22:29:37

如何用ACPI改写固件?OpenCore SSDT注入与DSDT补丁完整指南

如何用ACPI改写固件?OpenCore SSDT注入与DSDT补丁完整指南 【免费下载链接】OpenCorePkg OpenCore bootloader 项目地址: https://gitcode.com/gh_mirrors/op/OpenCorePkg OpenCore bootloader(OpenCorePkg)是一个用 C 语言编写的 UEF…

2026/9/21 22:29:37

备份QQ空间历史说说:GetQzonehistory

备份QQ空间历史说说:GetQzonehistory 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 深夜翻空间想找五年前的那条转发,才发现QQ空间历史说说备份一直没做&#x…

2026/9/21 22:29:37

锈湖系列顺序怎么排?手写实现状态机避坑指南

锈湖系列顺序怎么排?手写实现状态机避坑指南 版本升级后 API 全变了,老代码直接报错,这种痛谁懂?很多开发者在接手旧项目或者维护大型应用时,发现原本的逻辑流因为框架更新变得支离破碎。这时候,靠框架的黑盒机制已经不够用了,你需要 手写实现…

2026/9/21 22:24:37

IP营销手写实现避坑指南:面试被问原理别慌

IP营销手写实现避坑指南:面试被问原理别慌 面试被问“IP营销”底层原理答不上来?别慌,这不仅是业务问题,更是技术实现问题。很多应届生以为IP营销就是找几个大V发推文,其实核心在于 用户身份识别、行为数据归因和精准触达…

2026/9/21 3:28:31

GAMP 5 基于风险的计算机化系统验证:软件分类与审计追踪实践

简介:《A Risk-Based Approach to Compliant GxP Computerized Systems》即业内熟知的GAMP 5指南,面向制药企业质量与IT合规人员、验证工程师及计算机化系统管理者,用于解决GxP法规环境下系统合规性难以科学落地的问题。文档以风险管理为主线…

2026/9/21 3:33:19

安全托管MSSP实战:从静态防御到人机协同的攻防运营与应急响应

简介:这份PPT围绕互联网业务安全托管服务展开,面向企业安全负责人、IT运维人员及关注MSSP/MSS选型的读者,重点回应传统安全过度依赖人工、碎片化静态防御难以对抗产业化攻击等痛点。资源共1个pptx文件,包体约30.63MB,以…

2026/9/21 0:02:23

OpenResearch:构建可复现的开放式研究工作流

第一次看到“OpenResearch”这个名字,我脑子里冒出的不是某个具体软件,而更像一种研究方式的宣言:开放、可复现、可验证。这三件事放在一起,其实比大多数人想象中难得多。过去几年我一直在折腾自己的研究工作流,从纯纸…

2026/9/20 4:54:47

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/21 18:32:12

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/21 10:29:02

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码