c语言结构体继承 多态,C语言设计模式-继承、封装和多态
前言
代码写的多了,也就越来越体会到设计模式的重要性,尤其是构建软件架构的时候,一个好的架构能减少大量的工作;
另外学会了设计模式也能更好的理解大牛们写的代码,而不至于拿到好项目的源码却无从下手;
所以学好设计模式极其重要,下面参考网上的文章结合自己的理解说说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语言设计模式-继承、封装和多态相关推荐
- c语言结构体编程,[编程] C语言的结构体详解
结构体 struct 结构体名{}变量名; 结构体变量: struct person{ char *name; int age; float score; } student; 成员的获取和赋值 // ...
- C 语言结构体引用,引用 C 语言结构体学习
引用 C 语言结构体学习 这篇文章很基础,是个学习的好资料,所以收藏了: 1.直接声明结构体变量: struct{ int length; int width; }box1; 这样就声明了一个名为bo ...
- c语言 结构体的输入输出_C语言的控制结构和输入输出
c语言 结构体的输入输出 Control Structure in C defines how the statements in the program are going to execute. ...
- c语言+结构体指针初始化,c语言结构体指针初始化===
c语言结构体指针初始化 今天来讨论一下C中的内存管理. 记得上周在饭桌上和同事讨论C语言的崛起时,讲到了内存管理方面 我说所有指针使用前都必须初始化,结构体中的成员指针也是一样 有人反驳说,不是吧,以 ...
- c语言结构体定义蚂蚁,C语言结构体(struct)常见使用方法
C语言结构体(struct)常见使用方法 C语言结构体(struct)常见使用方法 基本定义:结构体,通俗讲就像是打包封装,把一些有共同特征(比如同属于某一类事物的属性,往往是某种业务相关属性的聚合) ...
- c语言结构体定义坐标,C语言结构体定义的方法汇总
什么是结构体? 在C语言中,结构体(struct)指的是一种数据结构,是C语言中聚合数据类型(aggregate data type)的一类.结构体可以被声明为变量.指针或数组等,用以实现较复杂的数据 ...
- c语言结构体加联合,C语言:结构体和联合体(共用体)
结构体:struct 1.结构体变量的首地址能够被其最宽基本类型成员的大小所整除. 2.结构体每个成员相对于结构体首地址的偏移量(offset)都是成员的整数倍. 3.结构体的总大小为结构体最宽基本类 ...
- c语言结构体和联合体,C语言结构体和联合体
1.单链表插入 #include #include #define FALSE 0 #define TRUE 1 typedef struct NODE{ STRUCT NODE *link; int ...
- c语言结构体的位操作,C语言之路---结构体、位运算及预处理命令
一.结构体 1).概念 结构体是一种集合,它里面包含了多个变量或数组,它们的类型可以相同,也可以不同,每个这样的变量或数组都称为结构体的成员(Member). 结构体也是一种数据类型,它由程序员自己定 ...
- c语言结构体定义坐标,C语言结构体定义的方式
结构体是由不同数据类型组织在一起而构成的一种数据类型,因而一个结构体有多个数据项,每个数据项的类型可不相同. 1.结构体类型的说明 由于结构体类型不是C语言提供的标准类型,为了能够使用结构体类型,必须 ...
最新文章
- 文本处理工具之grep和egrep
- 返回或输出类型为 unsigned 8-bit type(8U) 的函数积累!
- NBU备份之一 Windows操作系统BMR的配置
- centos6 安装 mantisbt-1.2.8 —— (5)Mantisbt-1.2.8在contos上的安装
- Python数据类型中的字典-创建和基本操作
- Android KeyCode列表
- centos7 开机延迟几分钟后自启动
- python2默认编码_解决Python2.x编码之殇
- mysql 函数 局部变量_MySQL 存储过程 存储函数 局部变量 游标 概念示例
- android 的属性动画
- Windows下编写的脚本文件无法在Linux上运行的问题
- java if else 过多_Java利用策略模式优化过多if else代码
- k8s-configmap 挂载使用
- 无约束最优化(四) 步长加速法
- 公用计算机打不开扫雷,win7系统“扫雷”游戏无法打开问题的处理方法
- 那款软件可以测试平板电脑性能,性能测试和应用体验
- IOS HTTPS 服务器信任评估
- 命令查看linux版本,linux基础之教你如何查看linux版本
- Easyconnect For Mac 最新版 下载地址
- 计算机网络分代核心的属性,计算机网络开发专业核心能力题库-操作
热门文章
- 《张孝祥JAVA就业培训教程》书摘
- 技术改造奖补,湖北省技术改造项目奖励补贴标准和申报
- java命令执行jar包main方法指定相关依赖
- HTTP协议-引自孤傲苍狼博客
- 华为快应用_IDE:如何使用真机预览
- Word 2010创建图表的详细操作流程
- Register Form
- 史上最详细的Windows10系统离线安装.NET Framework 3.5的方法(附离线安装包下载)
- ERROR: Timeout after 10 minutes ERROR: Error fetching remote repo 'origin'
- MATLAB弹出窗口定义操作函数