版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言高级编程技巧段博C与面向对象C语言是应用非常广泛的一门编程语言,特别是在嵌入式领域,更是占据着不可替代的位置。面向对象程序设计把数据和对数据的操作封装在一起构成类,由类来产生对象,由对象来构建程序。通过继承、多态等机制大大增强软件的可重用性和可维护性。将面向对象概念引入C语言编程过程具有重要意义。面向对象特性在C语言中的实现—封装性封装:C语言可以实现struct,这个与类非常接近。封装的产物就是类,其实例便是对象。对于属性,struct内部可以包含任何类型的数据成员作为对象的属性;但是,struct内部不能有函数成员,却可以有函数指针,通过函数指针指向成员函数。面向对象特性在C语言中的实现—封装性(2)举个例子,下面的结构GTKObjectClass就可以看成一个类,其中flag是成员变量,三个函数指针是成员函数。struct_GtkObjectClass{ guint32flag; void(*set_arg)(GtkObject*object,GtkArg*arg,guintarg_id); void(*get_arg)(GtkObject*object,GtkArg*arg,guintarg_id); void(*destroy)(GtkObject*object); };面向对象特性在C语言中的实现—继承性继承:复用已经定义的操作。C语言不支持继承,但struct可以实现组合(Composition),可以先定义一个“父”struct,然后定义一个“子”struct,在“子”struct中添加其特有的属性和方法指针,这样就模拟了继承。面向对象特性在C语言中的实现—继承性(2)举个例子,GTK+中有一个类GtkObject,它是所有其他类的父类。GTK+中最常用的按钮控件也是一个类GtkButton,它继承自GtkObject。它与GtkObject的继承关系是:GtkObject->GtkWidget->GtkContainer->GtkBin->GtkButton面向对象特性在C语言中的实现—继承性(3)在GTK中实现如下:
structGtkObject{ ...... }
structWidget{ GtkObjectobject; ...... } structGtkContainer{ GtkWidgetwidget; ...... }; structGtkBin{ GtkContainercontainer; ...... }; structGtkButton{ GtkBinbin; ...... };
面向对象特性在C语言中的实现—多态性多态:用一个经典的英文解释就是Avaluebelongtomultipletypes.即一个值属于多种类型。C语言中可以使用强制类型转换实现多态性,但要求父类结构体数据必须位于子类结构体数据的开始。面向对象特性在C语言中的实现—多态性(2)以创建一个ButtonWidget为例:
GtkWidget*button; button=gtk_button_new_with_label("HelloWorld"); 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】
#defineinit_list_head(ptr)\ do{(ptr)->next=(ptr);(ptr)->prev=(ptr);}\ while(0)
代码中为何使用do{…}while(0)?链表的操作(3)【2】 #definelist_entry(ptr,type,member)\ ((type*)((unsignedlong)(ptr)-\ ((unsignedlong)(&((type*)0)->member)链表的操作(3)【3】 #definelist_for_each(pos,head)\ for((pos)=(head)->next;\ (pos)!=(head);\ (pos)=(pos)->next)【4】 #definelist_for_each_safe(pos,n,head)\ for((pos)=(head)->next,n=(pos)-
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高中语文 第一单元 桥边的老人、墙上的斑点教学设计 新人教版《外国小说欣赏》
- 智慧城市中数据隐私保护技术研究综述
- 饰面镶贴与安装教学设计中职专业课-建筑施工工艺-建筑工程施工-土木建筑大类
- 制造业创新中心建设分类办法
- 叉车电池加液作业指导书
- 三年级语文下册 第三单元 10 纸的发明第1课时教学设计 新人教版
- 数通考题及其答案展示
- 高考历史一轮复习 课后习题 第35讲 古代世界的帝国与文明的交流(通史版)
- 2026年食品安全与食品卫生法规测试
- 浙教版(2023)三上 第4课《进入在线平台》教学设计
- 水产苗种生产技术操作规程
- 高等数学各专业复习资料大全
- 2025年山东省烟台市辅警招聘公安基础知识考试题库及答案
- 《JYT 0616-2023高等学校实验室消防安全管理规范》(2026年)实施指南
- 矿山买卖居间合同协议书
- 铝板安装劳务合同范本
- (正式版)DB23∕T 221-2002 《规模化养蜂技术规程》
- 院感无菌操作制度课件
- DB13(J)-T 8511-2022 建设工程消耗量标准及计算规则(装饰装修工程)
- 骨科见习带教课件
- BSL-1生物安全实验室备案审核表
评论
0/150
提交评论