C语言和设计模式(继承、封装、多态)

2023-05-16

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

记得还在我们大学C++第一门课的时候,老师就告诉我们说,C++是一门面向对象的语言。C++有三个最重要的特点,即继承、封装、多态。等到后来随着编码的增多和工作经验的积累,我也慢慢明白了面向对象的含义。可是,等我工作以后,使用的编程语言更多的是C语言,这时候我又想能不能把C语言变成面向对象的语言呢?等到后来通过思考和实践,我发现其实C语言也是可以面向对象的,也是可以应用设计模式的,关键就在于如何实现面向对象语言的三个重要属性。

*(1)继承性*

typedef struct _parent

{
    int data_parent;
}Parent;

typedef struct _Child
{
    struct _parent parent;
    int data_child;
}Child;

在设计C语言继承性的时候,我们需要做的就是把基础数据放在继承的结构的首位置即可。这样,不管是数据的访问、数据的强转、数据的访问都不会有什么问题。

*(2)封装性*

struct _Data;
typedef  void (*process)(struct _Data* pData);
typedef struct _Data
{
    int value;
    process pProcess;
}Data;

封装性的意义在于,函数和数据是绑在一起的,数据和数据是绑在一起的。这样,我们就可以通过简单的一个结构指针访问到所有的数据,遍历所有的函数。封装性,这是类拥有的属性,当然也是数据结构体拥有的属性。

*(3)多态*

typedef struct _Play
{
    void* pData;
    void (*start_play)(struct _Play* pPlay);
}Play;

多态,就是说用同一的接口代码处理不同的数据。比如说,这里的Play结构就是一个通用的数据结构,我们也不清楚pData是什么数据,start_play是什么处理函数?但是,我们处理的时候只要调用pPlay->start_play(pPlay)就可以了。剩下来的事情我们不需要管,因为不同的接口会有不同的函数去处理,我们只要学会调用就可以了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C语言和设计模式(继承、封装、多态) 的相关文章

  • 嵌入式开发,从开发板到产品的过程是什么样的?

    始终搞不懂 xff0c 比如在51单片机 AVR或者树莓派等等的单片机开发板上开发出一套系统之后 xff0c 怎样进一步发展成为一个具体产品的 xff1f 这个过程是什么样子的 xff1f 举个例子说 xff1a 我在51单片机上完成了一个
  • 虚拟+现实:半实物仿真测试和全数字仿真测试有效保证嵌入式系统的健壮与可靠

    已剪辑自 http www kiyun com Show news cid 11 id 273 html 随着现代信息技术与软硬件技术的快速发展 xff0c 嵌入式系统的功能日益强大 xff0c 嵌入式设备和软件应用领域越来越宽泛 近年来
  • 全数字仿真测试工具Edst

    产品概述 全数字仿真测试工具是基于嵌入式处理器的全数字仿真 xff0c 在全数字仿真环境下 xff0c 对嵌入式C语言和汇编语言软件的分析 仿真运行 故障注入和软件测试等 全数字仿真测试工具适用于现代的嵌入式系统的验证 开发 测试和维护的全
  • 现在快2022年了,c++为什么还要实现(.cpp)和声明(.h)分开?

    像 Java 或 C 都不需要声明头文件 xff0c C 43 43 委员会为什么不解决这个问题 xff1f 都有人贴stackoverflow的解答了 xff0c 居然没人翻译 xff0c 我来翻译一下 xff0c 顺便夹点私货 Why
  • 【论文】论文阅读记录

    这个专栏是专注于入了职场之后 xff0c 对写论文能力要求和技巧经验的一些总结 在职场不同于在学习等科研院所 xff0c 更多要求的是发出论文 xff0c 而不是发高水平论文 文章列表 xff1a 程序员读论文 为什么要读论文 xff1f
  • 数据库的备份和还原

    数据库的备份和还原是一个很重要的问题 xff0c 有时候我们一个误删可能数据库里的数据就都没有了 xff0c 所以一定要做好备份的工作 备份 1 右击 任务 备份 2 选择要备份的数据库 xff0c 和备份的类型 完整 xff0c 添加 3
  • 分享几篇有关DO-178和GJB5000对比的论文

    文章目录 DO 178B与GJB5000A对比分析研究 DO 178C与军用软件体系融合探索 GJB5000A与DO 178B C的综合应用研究 GJB5000A与DO 178B的结合实施方案 对比DO 178C与GJB5000A浅析软件适
  • 【论文】ROS系统的无人小车自动跟随方案研究

    这个专栏是专注于入了职场之后 xff0c 对写论文能力要求和技巧经验的一些总结 在职场不同于在学习等科研院所 xff0c 更多要求的是发出论文 xff0c 而不是发高水平论文 文章列表 xff1a 程序员读论文 为什么要读论文 xff1f
  • 【论文】多区域摄像头的人脸实时对比设计

    这个专栏是专注于入了职场之后 xff0c 对写论文能力要求和技巧经验的一些总结 在职场不同于在学习等科研院所 xff0c 更多要求的是发出论文 xff0c 而不是发高水平论文 文章列表 xff1a 程序员读论文 为什么要读论文 xff1f
  • 软件形式化方法概述

    已剪辑自 https www cnblogs com x wukong p 6864462 html 转自 xff1a http blog csdn net lovelion article details 8635369 友情提示 xff
  • 结构化程序设计

    已剪辑自 结构化程序设计 结构化程序设计 xff08 structured programming xff09 xff1a 1 xff1a 结构化程序设计是进行以 模块 功能和处理过程设计为主的详细设计的基本原则 结构化程序设计是过程式程序
  • 软件需求最佳实践笔记(一)

    1 软件需求最佳实践笔记 需求框架 前言 xff1a SERU是一套系统全面的需求方法论 xff0c 可指导我们日常的软件需求工作 曾参加过徐峰老师软件需求最佳实践课程的培训 xff0c 收益颇多 xff0c 现通过笔记形式整理出来 xff
  • 软件需求最佳实践笔记(二)

    文章目录 7 软件需求最佳实践笔记 需求分析与建模 xff08 一 xff09 8 软件需求最佳实践笔记 需求分析与建模 xff08 二 xff09 9 软件需求最佳实践笔记 需求分析与建模 xff08 三 xff09 10 软件需求最佳实
  • 软件需求最佳实践笔记(三)

    文章目录 12 软件需求最佳实践笔记 需求基线13 软件需求最佳实践笔记 需求变更14 软件需求最佳实践笔记 需求跟踪15 软件需求最佳实践笔记 总结 12 软件需求最佳实践笔记 需求基线 一 需求基线的理念与策略 软件需求 KarlE W
  • 软件需求的三个层次

    已剪辑自 https www cnblogs com znjy p 15339313 html 一 理解 今天在课堂上被老师提问到软件需求的三个层次分别是什么 xff0c 但是自己并不是很了解 xff0c 于是就查阅了相关资料并进行了以下总
  • 总体设计、概要设计和详细设计

    最近负责一个项目开发 xff0c 顶头上司是一个 王庆 式的变态 整天唠叨着总体设计 概要设计和详细设计 本不以为然这些 xff0c 可是烦得要命 xff0c 一怒之下告诉他 xff1a 软件开发只有概要设计和详细设计 xff0c 没有总体
  • 将DataGridview中的数据存入数据库

    在机房收费的时候我们都会用到DataGridView控件 xff0c 用来显示从数据库中返回的数据 如何用DataGridView将数据存入到数据库 xff0c 而且是存入到字段与数据库中不一致的表中呢 xff1f 前提介绍 为了将如下的1
  • 形式化说明技术

    剪辑与 软件工程导论

随机推荐