前言

代码写的多了,也就越来越体会到设计模式的重要性,尤其是构建软件架构的时候,一个好的架构能减少大量的工作;

另外学会了设计模式也能更好的理解大牛们写的代码,而不至于拿到好项目的源码却无从下手;

所以学好设计模式极其重要,下面参考网上的文章结合自己的理解说说C语言中如何使用设计模式;

下面就说说面向对象的三个重要属性。

继承性

继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。

其继承的过程,就是从一般到特殊的过程。

typedef struct _parent

{

int data_parent;

}Parent;

typedef struct _Child

{

struct _parent parent;

int data_child;

}Child;

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

数据的强转、数据的访问都不会有什么问题。

封装性

封装可以隐藏实现细节,使得代码模块化;封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。

面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受

保护的接口访问其他对象。在面向对象编程上可理解为:把客观事物封装成抽象的类,并且类可以把自己的数据

和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。

struct _Data;

typedef void (*process)(struct _Data* pData);

typedef struct _Data

{

int value;

process pProcess;

}Data;

封装性的意义在于,函数和数据是绑在一起的,数据和数据是绑在一起的。这样,我们就可以通过简单的一个结构

指针访问到所有的数据,遍历所有的函数。封装性,这是类拥有的属性,当然也是数据结构体拥有的属性。

多态

多态性(polymorphisn)是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象

就可以根据当前赋值给它的子对象的特性以不同的方式运作。简单的说,就是一句话:允许将子类类型的指针赋

值给父类类型的指针。

typedef struct _Play

{

void* pData;

void (*start_play)(struct _Play* pPlay);

}Play;

源码下载

参考资料

c语言结构体继承 多态,C语言设计模式-继承、封装和多态相关推荐

  1. c语言结构体编程,[编程] C语言的结构体详解

    结构体 struct 结构体名{}变量名; 结构体变量: struct person{ char *name; int age; float score; } student; 成员的获取和赋值 // ...

  2. C 语言结构体引用,引用 C 语言结构体学习

    引用 C 语言结构体学习 这篇文章很基础,是个学习的好资料,所以收藏了: 1.直接声明结构体变量: struct{ int length; int width; }box1; 这样就声明了一个名为bo ...

  3. c语言 结构体的输入输出_C语言的控制结构和输入输出

    c语言 结构体的输入输出 Control Structure in C defines how the statements in the program are going to execute. ...

  4. c语言+结构体指针初始化,c语言结构体指针初始化===

    c语言结构体指针初始化 今天来讨论一下C中的内存管理. 记得上周在饭桌上和同事讨论C语言的崛起时,讲到了内存管理方面 我说所有指针使用前都必须初始化,结构体中的成员指针也是一样 有人反驳说,不是吧,以 ...

  5. c语言结构体定义蚂蚁,C语言结构体(struct)常见使用方法

    C语言结构体(struct)常见使用方法 C语言结构体(struct)常见使用方法 基本定义:结构体,通俗讲就像是打包封装,把一些有共同特征(比如同属于某一类事物的属性,往往是某种业务相关属性的聚合) ...

  6. c语言结构体定义坐标,C语言结构体定义的方法汇总

    什么是结构体? 在C语言中,结构体(struct)指的是一种数据结构,是C语言中聚合数据类型(aggregate data type)的一类.结构体可以被声明为变量.指针或数组等,用以实现较复杂的数据 ...

  7. c语言结构体加联合,C语言:结构体和联合体(共用体)

    结构体:struct 1.结构体变量的首地址能够被其最宽基本类型成员的大小所整除. 2.结构体每个成员相对于结构体首地址的偏移量(offset)都是成员的整数倍. 3.结构体的总大小为结构体最宽基本类 ...

  8. c语言结构体和联合体,C语言结构体和联合体

    1.单链表插入 #include #include #define FALSE 0 #define TRUE 1 typedef struct NODE{ STRUCT NODE *link; int ...

  9. c语言结构体的位操作,C语言之路---结构体、位运算及预处理命令

    一.结构体 1).概念 结构体是一种集合,它里面包含了多个变量或数组,它们的类型可以相同,也可以不同,每个这样的变量或数组都称为结构体的成员(Member). 结构体也是一种数据类型,它由程序员自己定 ...

  10. c语言结构体定义坐标,C语言结构体定义的方式

    结构体是由不同数据类型组织在一起而构成的一种数据类型,因而一个结构体有多个数据项,每个数据项的类型可不相同. 1.结构体类型的说明 由于结构体类型不是C语言提供的标准类型,为了能够使用结构体类型,必须 ...

最新文章

  1. 文本处理工具之grep和egrep
  2. 返回或输出类型为 unsigned 8-bit type(8U) 的函数积累!
  3. NBU备份之一 Windows操作系统BMR的配置
  4. centos6 安装 mantisbt-1.2.8 —— (5)Mantisbt-1.2.8在contos上的安装
  5. Python数据类型中的字典-创建和基本操作
  6. Android KeyCode列表
  7. centos7 开机延迟几分钟后自启动
  8. python2默认编码_解决Python2.x编码之殇
  9. mysql 函数 局部变量_MySQL 存储过程 存储函数 局部变量 游标 概念示例
  10. android 的属性动画
  11. Windows下编写的脚本文件无法在Linux上运行的问题
  12. java if else 过多_Java利用策略模式优化过多if else代码
  13. k8s-configmap 挂载使用
  14. 无约束最优化(四) 步长加速法
  15. 公用计算机打不开扫雷,win7系统“扫雷”游戏无法打开问题的处理方法
  16. 那款软件可以测试平板电脑性能,性能测试和应用体验
  17. IOS HTTPS 服务器信任评估
  18. 命令查看linux版本,linux基础之教你如何查看linux版本
  19. Easyconnect For Mac 最新版 下载地址
  20. 计算机网络分代核心的属性,计算机网络开发专业核心能力题库-操作

热门文章

  1. 《张孝祥JAVA就业培训教程》书摘
  2. 技术改造奖补,湖北省技术改造项目奖励补贴标准和申报
  3. java命令执行jar包main方法指定相关依赖
  4. HTTP协议-引自孤傲苍狼博客
  5. 华为快应用_IDE:如何使用真机预览
  6. Word 2010创建图表的详细操作流程
  7. Register Form
  8. 史上最详细的Windows10系统离线安装.NET Framework 3.5的方法(附离线安装包下载)
  9. ERROR: Timeout after 10 minutes ERROR: Error fetching remote repo 'origin'
  10. MATLAB弹出窗口定义操作函数