当前位置: 首页 > news >正文

C++深入讲解类与封装的概念与使用

一、类的组合电脑一般而言是由 CPU内存主板键盘和硬盘等部件组合而成。二、类的封装类通常分为以下两个部分类的实现细节类的使用方式当使用类时不需要关心其实现细节当创建类时才需要考虑其内部实现细节例普通用户使用手机只需要学习如何发短信打电话拍照等等手机开发工程师需要考虑手机内部的实现细节封装的基本概念根据经验并不是类的每个属性都是对外公开的如女孩子不希望外人知道自己的体重和年龄如男孩子不希望别人知道自己的身高和收入而一些类的属性是对外公开的如人的姓名学历国籍等必须在类的表示法中定义属性和行为的公开级别类似文件系统中文件的权限C中类的封装成员变量C中用于表示类属性的变量成员函数C中用于表示类行为的函数C中可以给成员变量和成员函数定义访问级别public成员变量和成员函数可以在类的内部和外界访问和调用private成员变量和成员函数只能在类的内部被访问和调用下面看一段类成员的访问属性的代码1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980#include stdio.hstructBiology{boolliving;};structAnimal : Biology{boolmovable;voidfindFood(){}};structHuman : Animal{voidsleep(){printf(Im sleeping...\n);}voidwork(){printf(Im working...\n);}};structGirl : Human{private:intage;intweight;public:voidprint(){age 22;weight 48;printf(Im a girl, Im %d years old.\n, age);printf(My weight is %d kg.\n, weight);}};structBoy : Human{private:intheight;intsalary;public:intage;intweight;voidprint(){height 175;salary 9000;printf(Im a boy, my height is %d cm.\n, height);printf(My salary is %d RMB.\n, salary);}};intmain(){Girl g;Boy b;g.print();b.age 19;b.weight 120;//b.height 180;b.print();return0;}下面为输出结果注意如果我们访问 boy 里面的 height因为是 private所以编译时就会报如下错误三、类成员的作用域类成员的作用域类成员的作用域都只在类的内部外部无法直接访问成员函数可以直接访问成员变量和调用成员函数类的外部可以通过类变量访问 public 成员类成员的作用域与访问级别没有关系注C 中用 struct 定义的类中所有成员默认为 public下面看一段类成员的作用域的代码123456789101112131415161718192021222324252627282930313233343536#include stdio.hinti 1;structTest{private:inti;public:intj;intgetI(){i 3;returni;}};intmain(){inti 2;Test test;test.j 4;printf(i %d\n, i);// i 2;printf(::i %d\n, ::i);// ::i 1;// printf(test.i %d\n, test.i); // Errorprintf(test.j %d\n, test.j);// test.j 4printf(test.getI() %d\n, test.getI());// test.getI() 3return0;}下面为输出结果::i 意味着访问默认命名空间中的 i 变量默认的命名空间就是全局作用域。四、小结类通常可以分为使用方式和内部细节两部分类的封装机制使得使用方式和内部细节相分离C 中通过定义类成员的访问级别实现封装机制public 成员可以在类的内部和外界访问和调用private 成员只能在类的内部被访问和调用到此这篇关于C 深入讲解类与封装的概念与使用的文章就介绍到这了,
http://www.gsyq.cn/news/1360319.html

相关文章:

  • QGIS插件QuickOSM实战:5分钟搞定城市级路网、水系与POI数据,为你的地图项目快速打底
  • Deepseek-V4-Flash-20260423 深度评测与实战指南
  • 避坑指南:用MounRiver Studio一键烧录沁恒CH32V208时,WCH-LinkRV连接失败怎么办?
  • 2026 年免费投票制作平台哪个最好用 丨平台深度测评报告 - 资讯纵览
  • AI写作辅助平台的合规秘籍:如何界定“合理使用”与学术不端?
  • 用LabVIEW和USRP玩转高阶QAM:从16QAM到1024QAM的星座图调试实战
  • 书匠策AI官网www.shujiangce.com|论文降重降AIGC的“隐形铠甲“,毕业季救命装备实测拆解
  • 书匠策AI拆解|毕业论文全流程“开挂指南“,2025届毕业生必看的写论文黑科技!
  • 告别静默推送!用UniApp+UniPush2.0打造高点击率消息通知(附完整项目配置)
  • Envoy支持Go Wasm插件,就真的更安全了吗?
  • 设计职场人脉标签精细化管理程序,给人脉分类标注领域,精细对接工作合作需求,
  • 开发团队头脑风暴创意收集评级程序,批量收集创意,按照可行性自动分级筛选。
  • STC89C52控制DAC0832的三种姿势详解:直通、单缓冲、双缓冲到底怎么选?
  • 编写加班时长合理管控程序,统计无效加班,提醒及时下班,守护个人生活边界。
  • 保姆级教程:用闲置旧电脑和U盘,5分钟搞定OpenWrt软路由安装与基础网络配置
  • Unity打包踩坑实录:用了EPPlus读取Excel,为什么PC打包后报错?附I18N.dll解决方案
  • 告别Fiddler和Charles!用Whistle这个网页版抓包神器,团队调试效率翻倍
  • 贵阳纳海川·上门维修数字化解决方案
  • 瑞芯微(EASY EAI)RV1126B 嵌入式底层开发简介
  • 2026年免费投票制作平台哪个最好用丨平台深度测评报告 - 资讯纵览
  • 成年人最大的牢笼:活在别人的操作系统里
  • Netty实战:从零构建高性能TCP通信服务(含心跳检测)
  • 为什么你的AI教学工具总在“假装智能”?——从LSTM到ReAct,教育Agent决策链路断层实测报告
  • Linux内核安全模块深入剖析【2.6】
  • 别再纠结选型了!手把手教你用AJ-Report搞定数据大屏(附ClickHouse扩展实战)
  • 长期使用taotoken token plan套餐后个人开发者的月度成本控制感受
  • 通宵体验腾讯马维斯:它能帮你干活,不只是陪你聊天
  • 终极指南:3步轻松解包网易游戏NPK文件资源
  • 5分钟掌握Power BI主题模板:让数据报表瞬间变专业的秘密武器
  • Tycoon AI 新手快速上手指南