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

C++传记 类的定义(面向对象)

面向对象编程OOP是C的核心特性之一其核心思想是“封装、继承、多态”而则是实现面向对象编程的基础载体——它本质上是一种自定义的数据类型用于封装一组相关的属性数据和行为函数将数据和操作数据的方法捆绑在一起实现数据的隐藏和模块化让代码更具可读性、可维护性和可扩展性。一、类的核心概念类可以理解为“模板”或“蓝图”它定义了一类事物共同的属性和行为而通过类创建的具体实例对象则是这一模板的具体实现。例如“学生”可以作为一个类它的属性包括姓名、学号、年龄行为包括上课、考试、交作业而具体的学生“张三”“李四”就是这个类的对象。类的核心作用是将类的内部数据属性隐藏起来只通过类提供的公共接口成员函数来访问和操作数据避免外部直接修改内部数据保证数据的安全性和一致性。二、类的定义格式C中类的定义使用关键字基本格式如下分为“类头”和“类体”两部分类体中包含成员变量属性和成员函数行为最后必须以分号结束。class 类名 { // 访问权限控制符public、private、protected 访问权限控制符: 成员变量; // 类的属性数据成员 成员函数声明; // 类的行为成员函数 成员函数实现; // 可在类内实现也可在类外实现 }; // 注意分号不能省略关键说明遵循C标识符命名规则通常首字母大写如Student、Person便于区分普通变量和类名增强代码可读性。C提供三种访问权限用于控制类成员的访问范围是封装特性的核心体现public公有类内、类外均可访问通常用于定义公共接口成员函数供外部调用。private私有仅类内可访问类外无法直接访问通常用于定义内部数据成员变量隐藏内部实现。protected保护类内可访问子类可访问父类外不可访问主要用于继承场景后续笔记详解。用于存储类的属性本质是类内的变量可定义各种数据类型int、string、double等也可定义自定义类型。用于实现类的行为本质是类内的函数可直接访问类的所有成员公有、私有、保护用于操作成员变量、实现具体功能。三、类的定义示例完整演示以“学生类Student”为例完整演示类的定义、成员变量、成员函数的声明与实现类内实现类外实现结合。#include iostream #include string // 用于使用string类型 using namespace std; // 定义Student类 class Student { // 私有成员仅类内可访问数据隐藏 private: string name; // 成员变量姓名 int studentId; // 成员变量学号 int age; // 成员变量年龄 // 公有成员类内、类外均可访问公共接口 public: // 1. 类内实现成员函数简单函数可直接在类内定义 void setInfo(string n, int id, int a) { // 成员函数访问私有成员变量赋值 name n; studentId id; age a; } // 2. 类内声明、类外实现成员函数复杂函数建议类外实现提升代码整洁度 void showInfo(); // 声明显示学生信息 int getAge(); // 声明获取学生年龄只读接口避免直接修改age }; // 类外实现成员函数格式为「类名::成员函数名(参数列表) { 实现代码 }」 void Student::showInfo() { cout 学号 studentId endl; cout 姓名 name endl; cout 年龄 age endl; } int Student::getAge() { return age; // 仅返回年龄不允许外部修改 } // 主函数使用类创建对象调用成员函数 int main() { // 创建Student类的对象实例化 Student stu1; // 调用公有成员函数setInfo给对象赋值无法直接访问stu1.name stu1.setInfo(张三, 2024001, 18); // 调用公有成员函数showInfo显示对象信息 stu1.showInfo(); // 调用公有成员函数getAge获取年龄 cout 该学生的年龄 stu1.getAge() endl; return 0; } // 运行结果 // 学号2024001 // 姓名张三 // 年龄18 // 该学生的年龄18四、类定义的关键注意事项尽量将成员变量设为private通过public成员函数提供访问和修改的接口如示例中的setInfo、getAge避免外部直接操作成员变量防止数据被误修改。必须加上「类名::」作用域解析符否则编译器会将其识别为普通全局函数而非类的成员函数。实际开发中通常将类的声明类头、成员函数声明放在头文件.h中将成员函数的实现放在源文件.cpp中避免重复定义提升代码模块化。类的成员变量不能在定义时直接初始化如int age 18; 错误需通过构造函数后续笔记详解或成员函数如示例中的setInfo进行初始化。类的成员成员变量、成员函数仅在类的作用域内有效外部访问时必须通过对象对象.成员或指针指针-成员访问公有成员。五、类与结构体的区别补充C中的struct结构体与class功能类似均可用于定义自定义类型但核心区别在于struct默认访问权限为publicclass默认访问权限为private。在面向对象编程中优先使用class因为其默认的private权限更符合封装的思想struct更多用于单纯的数据封装无复杂行为。六、总结类的定义是C面向对象编程的基础核心是通过class关键字封装属性成员变量和行为成员函数并通过访问权限控制符实现数据隐藏和接口暴露。掌握类的定义格式、访问权限、成员函数的类内/类外实现是后续学习构造函数、析构函数、继承、多态的前提。核心要点类是模板对象是实例封装是核心权限控访问成员分变量和函数实现可内可外。

相关文章:

C++传记 类的定义(面向对象)

面向对象编程(OOP)是C的核心特性之一,其核心思想是“封装、继承、多态”,而则是实现面向对象编程的基础载体——它本质上是一种自定义的数据类型,用于封装一组相关的属性(数据)和行为&#xff0…...

AT32F403A基于V2库实现多通道ADC+DMA数据采集实战

1. 硬件准备与环境搭建 第一次接触AT32F403A开发板时,我对着官方文档研究了半天。这块板子最吸引我的地方是内置了ATLink-EZ调试器,省去了额外购买仿真器的麻烦。开发板采用AT32F403AVGT7芯片,核心资源丰富,特别适合做ADC多通道采…...

RQ任务依赖循环检测终极指南:如何避免工作流死锁陷阱

RQ任务依赖循环检测终极指南:如何避免工作流死锁陷阱 【免费下载链接】rq 项目地址: https://gitcode.com/gh_mirrors/rq/rq Redis Queue (RQ) 是一个强大的Python任务队列系统,它支持任务依赖管理功能,让开发者能够构建复杂的工作流…...

PvZ Toolkit 技术指南:从游戏修改到体验重塑

PvZ Toolkit 技术指南:从游戏修改到体验重塑 【免费下载链接】pvztoolkit 植物大战僵尸 PC 版综合修改器 项目地址: https://gitcode.com/gh_mirrors/pv/pvztoolkit 价值定位:为什么选择 PvZ Toolkit? 当你在《植物大战僵尸》无尽模式…...

i.MX6ULL镜像制作避坑指南:为什么你的SD卡启动失败?从分区表到文件系统的深度解析

i.MX6ULL镜像制作避坑指南:为什么你的SD卡启动失败?从分区表到文件系统的深度解析 当你在深夜调试i.MX6ULL开发板,反复确认每个步骤都按教程操作,却依然遭遇SD卡启动失败时,那种挫败感每个嵌入式开发者都深有体会。本文…...

Spring Authorization Server设备授权深度实践:从协议解析到企业落地

Spring Authorization Server设备授权深度实践:从协议解析到企业落地 【免费下载链接】spring-authorization-server Spring Authorization Server 项目地址: https://gitcode.com/gh_mirrors/sp/spring-authorization-server 一、概念解析:为什么…...

保姆级教程:在Linux服务器上为PCIe NVMe SSD配置DPC,实现安全暴力热插拔

Linux服务器NVMe SSD暴力热插拔实战:DPC配置与生产环境验证 在数据中心运维领域,NVMe SSD因其高性能已成为存储标配,但传统热插拔流程需要预先卸载驱动、停止IO,这在7x24小时运行的生产环境中往往难以实施。本文将手把手带您完成P…...

突破网盘下载限制:直链解析工具的技术实现与应用指南

突破网盘下载限制:直链解析工具的技术实现与应用指南 【免费下载链接】Online-disk-direct-link-download-assistant 可以获取网盘文件真实下载地址。基于【网盘直链下载助手】修改(改自6.1.4版本) ,自用,去推广&#…...

4个关键步骤:全方位掌控BetterJoy让Switch手柄在PC上完美适配

4个关键步骤:全方位掌控BetterJoy让Switch手柄在PC上完美适配 【免费下载链接】BetterJoy Allows the Nintendo Switch Pro Controller, Joycons and SNES controller to be used with CEMU, Citra, Dolphin, Yuzu and as generic XInput 项目地址: https://gitco…...

comsol仿真建模 由于结构本身的复杂性,很难对实际多孔结构中的流动进行建模。 在实际应用中...

comsol仿真建模 由于结构本身的复杂性,很难对实际多孔结构中的流动进行建模。 在实际应用中,详细求解流场不可行。 因此,使用了利用多孔结构平均物理量 (如孔隙率和渗透率)的宏观方法。 本例详细分析孔隙尺度的流场&am…...

聊聊永磁同步电机里的那点“扰动“破事

两种负载扰动观测器设计思路,pmsm仿真 仿真基于离散模型,观测器设计基于m文件,方便移植到c验证 包含:(1)1.5延时补偿(2)扩张龙伯格扰动观测器(ESO)设计&#…...

内存优化工具Mem Reduct:为Windows系统注入流畅动力的轻量级解决方案

内存优化工具Mem Reduct:为Windows系统注入流畅动力的轻量级解决方案 【免费下载链接】memreduct Lightweight real-time memory management application to monitor and clean system memory on your computer. 项目地址: https://gitcode.com/gh_mirrors/me/mem…...

主流开源License深度解析:从BSD到CC的适用场景与商业考量

1. 开源许可证的本质与核心价值 第一次接触开源许可证时,我和大多数人一样困惑:为什么明明是我的代码,却需要别人来告诉我怎么使用?后来在参与多个开源项目后才发现,许可证就像代码世界的交通规则,它不是为…...

如何用开源工具G-Helper实现华硕笔记本硬件控制的全面优化?

如何用开源工具G-Helper实现华硕笔记本硬件控制的全面优化? 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops. Control tool for ROG Zephyrus G14, G15, G16, M16, Flow X13, Flow X16, TUF, Strix, Scar and other models 项…...

Ruby OpenAI用户行为分析:AI交互模式深度研究

Ruby OpenAI用户行为分析:AI交互模式深度研究 【免费下载链接】ruby-openai OpenAI API Ruby! 🤖🩵 Now with Assistants, Threads, Messages, Runs and Text to Speech 🍾 项目地址: https://gitcode.com/gh_mirrors/ru/ruby-…...

GitLab vs Gitea 深度解析:如何选择适合你的代码托管方案?

1. 核心定位与适用场景对比 第一次接触代码托管平台时,我和很多开发者一样在GitLab和Gitea之间纠结。经过三年在不同规模团队的实际使用,我发现这两个工具就像瑞士军刀和美工刀的关系——没有绝对的好坏,关键看你要切什么。 GitLab更像是个&q…...

Translumo:打破语言屏障的实时屏幕翻译利器

Translumo:打破语言屏障的实时屏幕翻译利器 【免费下载链接】Translumo Advanced real-time screen translator for games, hardcoded subtitles in videos, static text and etc. 项目地址: https://gitcode.com/gh_mirrors/tr/Translumo 你是否曾在游戏中遇…...

AI Agent岗位需求暴涨986%,年薪达19万美元,新职业“Agent师“横空出世!

Sam Altman和Dario Amodei先后押注同一件事:第一家"一人十亿美元公司"将在2026年出现。与此同时,AI Agent相关岗位需求一年内增长986%,均薪达到19万美元。一个不以编程为门槛的新职业方向,正在打破"做多大的事就需…...

孤能子视角:“智能动力学“,AI的“自指“分析

(我将【孤能子视角:“关系“通透,难转译为“实体“ - CSDN App】https://blog.csdn.net/lzmtw/article/details/159602104?sharetypeblog&shareId159602104&sharereferAPP&sharesourcelzmtw&sharefromlink的内容贴给悟空浏览器的悟空AI&#xff0c…...

Restate监控与调试:如何利用内置工具实现应用全链路可观测性

Restate监控与调试:如何利用内置工具实现应用全链路可观测性 【免费下载链接】restate Restate is the platform for building resilient applications that tolerate all infrastructure faults w/o the need for a PhD. 项目地址: https://gitcode.com/gh_mirro…...

电视盒变身记:3步打造你的家庭全能服务器,闲置设备重获新生!

电视盒变身记:3步打造你的家庭全能服务器,闲置设备重获新生! 【免费下载链接】amlogic-s9xxx-armbian amlogic-s9xxx-armbian: 该项目提供了为Amlogic、Rockchip和Allwinner盒子构建的Armbian系统镜像,支持多种设备,允…...

OTA电路仿真实战:用Virtuoso617分析频率响应与相位特性

OTA电路仿真实战:用Virtuoso617分析频率响应与相位特性 在模拟电路设计领域,运算跨导放大器(OTA)作为核心构建模块,其性能直接决定了整个系统的表现。本文将带您深入Virtuoso617的仿真世界,通过实战案例解…...

OnTopReplica组切换模式揭秘:自动轮换多个监控窗口的完整指南

OnTopReplica组切换模式揭秘:自动轮换多个监控窗口的完整指南 【免费下载链接】OnTopReplica A real-time always-on-top “replica” of a window of your choice (on Windows). 项目地址: https://gitcode.com/gh_mirrors/on/OnTopReplica OnTopReplica是一…...

ECDICT开源英汉词典数据库:构建高可用分布式语言服务的完整技术方案

ECDICT开源英汉词典数据库:构建高可用分布式语言服务的完整技术方案 【免费下载链接】ECDICT Free English to Chinese Dictionary Database 项目地址: https://gitcode.com/gh_mirrors/ec/ECDICT ECDICT是一个完全免费的开源英汉词典数据库,为开…...

Git-RSCLIP模型在计算机网络教学中的应用

Git-RSCLIP模型在计算机网络教学中的应用 1. 引言 计算机网络课程的教学一直面临着抽象概念多、协议交互复杂、拓扑结构难以直观展示的挑战。传统的教学方式往往依赖于静态的图表和文字描述,学生很难真正理解数据包在网络中的流动过程、协议之间的交互关系&#x…...

OpenClaw 3.28重磅发布:Grok搜索内置,高危操作迎来“保命”拦截机制

引言: 不仅仅是“草台”后的补救,更是智能体操作系统的成人礼 就在前两天,OpenClaw 之父 Peter 的一次“漏打包”操作,直接导致 3.22 版本大面积白屏,让无数开发者以为自己辛辛苦苦养了一周的“赛博小龙虾”就这么“死…...

网络工程师的日常:一次搞定eNSP中MSTP+VRRP的‘坑’与优化技巧

eNSP实战:MSTPVRRP组网中的典型故障排查与性能调优 凌晨两点,当我在eNSP模拟器中第三次看到"VRRP state transition to Backup"的日志时,咖啡杯已经见底。这个典型的双核心企业网架构本该在半小时内完成配置,却因为MSTP…...

如何将MacBook刘海变成你的私人文件中转站:NotchDrop完整使用指南

如何将MacBook刘海变成你的私人文件中转站:NotchDrop完整使用指南 【免费下载链接】NotchDrop Use your MacBooks notch like Dynamic Island for temporary storing files and AirDrop 项目地址: https://gitcode.com/gh_mirrors/no/NotchDrop 你是否曾觉得…...

caj2pdf使用技巧:10个高效转换CAJ文件的实用方法

caj2pdf使用技巧:10个高效转换CAJ文件的实用方法 【免费下载链接】caj2pdf Convert CAJ (China Academic Journals) files to PDF. 转换中国知网 CAJ 格式文献为 PDF。佛系转换,成功与否,皆是玄学。 项目地址: https://gitcode.com/gh_mirr…...

RAG技术:解锁大模型潜力,实现精准、可信赖的智能问答

RAG(检索增强生成)技术通过将大语言模型(LLM)与外部知识库结合,有效解决LLM知识静态、幻觉等问题,提升回答的准确性与可信度。RAG技术核心包括检索和生成两个阶段,通过优化文本分块、索引构建、…...