已阅读5页,还剩9页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言高级编程技巧 段博 C与面向对象 vC语言是应用非常广泛的一门编程语言,特别是在嵌入 式领域,更是占据着不可替代的位置。 v面向对象程序设计把数据和对数据的操作封装在一起 构成类,由类来产生对象,由对象来构建程序。通过 继承、多态等机制大大增强软件的可重用性和可维护 性 。 v将面向对象概念引入C语言编程过程具有重要意义。 面向对象特性在C语言中的实现封装性 v封装:C语言可以实现struct,这个与类非常 接近。 v封装的产物就是类,其实例便是对象。 v对于属性,struct内部可以包含任何类型的数 据成员作为对象的属性;但是,struct内部不 能有函数成员,却可以有函数指针,通过函数 指针指向成员函数。 面向对象特性在C语言中的实现封装性(2) n举个例子,下面的结构 GTKObjectClass 就可以看成一个类,其 中 flag 是成员变量,三个函数指针是成员函数 。 nstruct _GtkObjectClass guint32 flag; void (*set_arg) (GtkObject *object, GtkArg *arg, guint arg_id); void (*get_arg) (GtkObject *object, GtkArg *arg, guint arg_id); void (*destroy) (GtkObject *object); ; 面向对象特性在C语言中的实现继承性 v继承:复用已经定义的操作。 vC语言不支持继承,但struct可以实现组合( Composition),可以先定义一个“父”struct ,然后定义一个“子”struct,在“子 ”struct中添加其特有的属性和方法指针,这 样就模拟了继承。 面向对象特性在C语言中的实现继承性(2) n举个例子,GTK+ 中有一个类 GtkObject,它是所有其 他类的父类。GTK+ 中最常用的按钮控件也是一个类 GtkButton,它继承自 GtkObject。它与 GtkObject 的继承关系是: nGtkObjectGtkWidgetGtkContainerGtkBin GtkButton 面向对象特性在C语言中的实现继承性(3) n在GTK中实现如下: struct GtkObject struct Widget GtkObject object; struct GtkContainer GtkWidget widget; ; struct GtkBin GtkContainer container; ; struct GtkButton GtkBin bin; ; 面向对象特性在C语言中的实现多态性 v多态:用一个经典的英文解释就是 A value belong to multiple types.即 一个值属于多种类型。 vC语言中可以使用强制类型转换实现多 态性,但要求父类结构体数据必须位于 子类结构体数据的开始。 面向对象特性在C语言中的实现多态性(2) 以创建一个Button Widget为例: GtkWidget *button; button = gtk_button_new_with_label (“Hello World“); g_signal_connect (G_OBJECT (button), “clicked“, G_CALLBACK (hello), NULL); button 声明为 GtkWidget 类型的指针,用 gtk_button_new_with_lable 创建 一个 GtkButton;G_OBJECT 是一个 宏,完成强制类型转换,这里将 button 从 GtkWidget 类型转换成 GObject 类型。 C编程-链表的操作 链表的操作(2) Linux内核链表中几个重要的宏 【1】 #define init_list_head(ptr) do (ptr)-next = (ptr); (ptr)-prev = (ptr); while (0) 代码中为何使用dowhile (0)? 链表的操作(3) n【2】 #define list_entry(ptr, type, member) (type *)(unsigned long)(ptr)- (unsigned long)( (pos) != (head); (pos) = (pos)-next) n【4】 #define list_for_each_safe(pos, n, head) for (
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年设备监理师之设备监理合同考试题库含答案【模拟题】
- 2026年宁波市鄞州区卫健系统面向应届毕业生招聘“鄞领卫来”高层次人才45人历年真题汇编附答案解析
- 2026年浙江省人民医院公开招聘人员190人历年真题汇编附答案解析
- 2025河北雄安新区森林消防员招聘8人笔试备考试卷附答案解析
- 2026年质量员之土建质量专业管理实务考试题库200道含完整答案(必刷)
- 2025河北廊坊开发区招聘社区工作者40人参考题库带答案解析
- 2025中共南充市委目标绩效管理办公室遴选公务员2人(四川)历年真题库附答案解析
- 浙江国企招聘-2025年丽水市属企业面向残疾人公开招聘工作人员7人历年真题汇编带答案解析
- 2025广东广州越秀区光塔街招聘城管协管员4人参考题库带答案解析
- 贵州国企招聘:2025息烽县城市维护建设发展有限公司选聘笔试模拟试卷附答案解析
- 2022年上海商学院C语言冲刺卷(十二套试卷)及答案
- 桥梁南接线工程投标文件
- GB/T 34800-2017蛋白酶K酶活力及杂质检测方法
- GB/T 21198.6-2007贵金属合金首饰中贵金属含量的测定ICP光谱法第6部分:差减法
- GB/T 17316-2011水稻原种生产技术操作规程
- 休闲旅游人员推销步骤
- 2022年安康市交通建设投资集团有限公司招聘笔试试题及答案解析
- 2022高中英语译林版新教材选择性必修一课文翻译(英汉对照)
- 二尖瓣峡部的消融和验证
- 科研项目申请书撰写技巧与形式审查要点(51张)课件
- GB∕T 40853.1-2021 高频感性元件 电特性及其测量方法 第1部分:纳亨级片
评论
0/150
提交评论