C语言高级编程技巧.ppt_第1页
C语言高级编程技巧.ppt_第2页
C语言高级编程技巧.ppt_第3页
C语言高级编程技巧.ppt_第4页
C语言高级编程技巧.ppt_第5页
已阅读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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论