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

继承与派生

我这一个月在课堂上学习了C语言继承和派生

最近一个月的课堂时间,几乎都在和C语言的“继承与派生”死磕。一开始看到这两个词,我满是疑惑——C语言不是面向过程的语言吗?怎么会涉及到面向对象里的概念?深入学习后才明白,原来我们学的是用C语言的结构体和函数指针,模拟实现面向对象的继承与派生思想,这趟学习之旅,可算是收获满满。

在课堂上,老师首先点明了核心:继承的本质是代码复用。当我们需要定义多个具有相同属性和行为的结构体时,不需要重复编写相同的字段和函数,而是可以定义一个“基类”结构体,再让其他“派生类”结构体包含基类结构体,以此实现属性和方法的复用。

我们先定义一个Person基类结构体,包含姓名、年龄属性,以及一个展示信息的函数指针,再编写对应的成员方法,用来输出姓名和年龄信息。当需要定义Student结构体时,不需要再写姓名、年龄这些字段,只需要在Student结构体中嵌入Person结构体,再添加学号、专业这些特有属性即可,这就是派生的过程。

针对Student结构体,我们还需要编写对应的展示方法,在这个方法里,先调用Person结构体的展示函数输出基础信息,再补充输出学号和专业这些子类特有信息。在main函数中完成初始化和函数指针绑定后,调用展示方法,就能同时输出父类和子类的信息,完美体现代码复用的优势。

学习过程中,我也踩了不少坑。比如一开始忘记将派生类对象的父类部分地址传给函数,导致程序运行时出现段错误;还有一次混淆了函数指针的赋值顺序,使得子类无法正确调用父类的方法。后来在老师的指导和同学的讨论下,才慢慢理清逻辑:派生类调用父类方法时,必须传递父类成员的地址,而不是派生类对象的整体地址。

除了基础的继承实现,课堂上还拓展了单继承和多层继承的内容。比如在Student的基础上,再派生一个Graduate研究生结构体,添加研究方向等属性,进一步体会层层复用的便捷性。

这一个月的学习,让我彻底打破了“C语言只能面向过程”的固有认知。原来通过巧妙的代码设计,C语言也能实现面向对象的核心思想。不仅如此,我还深刻理解了“代码复用”的意义——这不仅能减少冗余代码,更能让程序结构更清晰、后期维护更方便。

接下来,我打算尝试用这种思想写一个小型的管理系统,把学到的知识真正运用到实践中去。相信在不断的练习中,我能把继承与派生的知识点掌握得更扎实。

http://www.jsqmd.com/news/173771/

相关文章:

  • YOLOv8能否识别古代建筑榫卯结构?营造技艺还原
  • Java SpringBoot+Vue3+MyBatis 校园新闻管理系统系统源码|前后端分离+MySQL数据库
  • YOLOv8能否识别古文字?文化遗产数字化助力
  • YOLOv8能否用于文化遗产保护?壁画破损识别
  • YOLOv8能否用于古村落布局分析?风水格局研究
  • 国产操作系统知识点总结
  • YOLOv8能否检测北极熊栖息地?气候变化影响评估
  • YOLOv8能否用于沙漠植被固沙效果评估?
  • 前后端分离校园悬赏任务平台系统|SpringBoot+Vue+MyBatis+MySQL完整源码+部署教程
  • YOLOv8模型大小对比:n/s/m/l/x各版本差异
  • YOLOv8标签格式要求:COCO与Pascal VOC转换方法
  • YOLOv8镜像内置哪些依赖?PyTorch安装细节揭秘
  • 国产操作系统知识点
  • ALU在工业控制中的应用:系统学习指南
  • YOLOv8预训练模型yolov8n.pt下载及推理演示教程
  • JFlash下载程序步骤在PLC系统中的操作指南
  • jscope使用教程:图解说明多通道信号调试方法
  • iOS 26.3 这一下,把 iPhone 的“围墙”掀开了:3 个变化,真的够大
  • YOLOv8音乐演出灯光控制:演员位置识别触发光效变化
  • YOLOv8能否检测文本?OCR结合应用场景设想
  • ModbusPoll下载与Modbus TCP仿真:Windows实战案例
  • YOLOv8室内装修设计:家具布局识别与风格匹配建议
  • 别再用 2016 的 CSS 设计 2026:这 7 招,让我少写一半废话
  • YOLOv5和YOLOv8哪个更轻量?模型参数量对比分析
  • 使用 Docker 的 Node.js(附:三种 Node.js 环境详细对比)
  • CSS vh单位在响应式轮播图中的应用技巧
  • nodejs:nvm vs fnm 详细对比
  • YOLOv8能否用于天文图像分析?星体定位尝试
  • 从零开始搭建YOLOv8开发环境:Jupyter与SSH双模式详解
  • YOLOv8模型导出ONNX格式教程:跨平台部署第一步