发布时间:2026/8/5 7:17:03
小学生学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/8/5 7:17:03

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

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

2026/8/5 7:17:03

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

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

2026/8/5 7:17:03

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

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

2026/8/5 8:22:06

Unity能量光剑特效实战:从Shader到粒子系统的完整实现与优化

1. 项目概述与核心思路能量光剑,这个源自科幻作品的经典视觉符号,几乎是每个游戏特效师或技术美术都跃跃欲试的“练手”项目。它看似简单——一根发光的棒子,但要想在Unity里做出既有能量感、又有动态交互、还能适配不同性能平台的效果&#…

2026/8/5 8:22:06

SQL连接详解:从内连接到外连接,掌握数据关联查询的核心

1. 项目概述:为什么SQL连接是数据世界的“万能胶”如果你用过Excel的VLOOKUP,或者处理过多个来源的数据表,那你一定体会过那种想把两张表的信息“拼”在一起的冲动。在数据库的世界里,SQL连接(JOIN)就是干这…

2026/8/5 8:22:06

Java数组核心特性与高效应用指南

1. Java数组基础概念与核心特性数组是Java中最基础且重要的数据结构之一,它代表一组相同类型元素的连续内存空间。与集合框架不同,数组在创建时就固定了长度,这种特性使得它在内存使用和访问效率上具有独特优势。1.1 数组的内存模型Java数组在…

2026/8/5 8:22:06

速通机器学习 08 | 决策树

一、决策树基础概念 1. 定义 决策树属于有监督学习算法:通过学习训练样本生成分层分类规则,依靠这套规则对新样本完成预测。 核心逻辑:所有样本数据从根节点逐层向下判断,最终落到叶子节点输出预测结果。 学习决策树的目的主要…

2026/8/5 8:22:06

计算机保研面试策略:从基础到工程再到交叉学科的靶向准备

1. 从“海投”到“精准定位”:我的保研面试策略复盘 又到了一年一度的保研季,最近后台和私信里收到不少学弟学妹的咨询,核心问题都差不多:“学长,我手里有几个夏令营/预推免的面试通知,该怎么准备&#xff…

2026/8/5 8:17:05

微信ClawBot技术解析:开源AI模型与微信生态的平民化AI代理实践

1. 从一只龙虾到14亿入口:ClawBot现象的本质是什么?最近,一个叫“微信ClawBot”的东西在圈子里火得不行。你可能没听过这个名字,但你大概率在微信群里见过它的“亲戚”——那些能陪你聊天、帮你查天气、甚至能写段子的机器人。Cla…

2026/8/5 3:13:11

如何用免费工具突破游戏窗口限制:SRWE完整使用指南

如何用免费工具突破游戏窗口限制:SRWE完整使用指南 【免费下载链接】SRWE Simple Runtime Window Editor 项目地址: https://gitcode.com/gh_mirrors/sr/SRWE 你是否遇到过这样的困扰?想为心爱的游戏截图,却发现游戏不支持自定义分辨率…

2026/8/5 0:01:34

三升四,比成绩下滑更可怕的,是孩子开始「认命」

分水岭上,最难的不是翻过去,是孩子不想翻了。八月初了。这两个字,对三升四的家长来说,比任何闹钟都让人清醒。最近的家长群里,气氛明显不一样了。一升二的在关心兴趣班,二升三的在讨论要不要提前学英语。而…

2026/8/5 0:01:34

Java缓存框架:JetCache

TOC 一、简介 JetCache 是一个 Java 缓存抽象框架,为不同的缓存解决方案提供了统一的使用方式。 它提供的注解比 Spring Cache 更加强大。 JetCache 的注解支持原生 TTL、两级缓存以及在分布式环境中的自动刷新功能,同时你也可以通过代码直接操作 Cach…

2026/8/5 0:01:34

AD 铺铜设置十字连接,过孔全连接,新版AD的简单设置

需求:通孔焊盘 十字花;过孔 Via 实心直连;贴片焊盘按需设置 AD 测试版本AD24 很多工程师踩坑:全部统一十字,导致接地过孔阻抗高、大电流发热! 一、快捷键打开规则 PCB 界面按下:D R 展开…

2026/8/3 22:40:58

实测才敢推 AI论文网站 2026最新测评与推荐

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。一、综…

2026/8/3 13:26:41

2026必备!AI论文网站测评:最新推荐与深度对比

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

2026/8/3 16:43:13

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…