GObject
文章平均质量分 53
胖子呀
这个作者很懒,什么都没留下…
展开
-
关于继承-GObject
定义一个父类struct GObject{ int x; //4个字节 int y; //4个字节};内存分配:x 4 byte y 4 byte 一共占用了8字节定义一个子类继承父类struct A{ GObject parent; //表示A的父类是GObject int z; //两个字节};内存分配:x 4字节...原创 2018-10-15 10:27:56 · 297 阅读 · 0 评论 -
GObject[6] 常用的宏定义
GObject经常要用到并且需要自己定义的宏对于 GObject 的子类化,那么在声明类的时候,在头文件中直接插入类似下面的一组宏定义:#define P_TYPE_T (p_t_get_type ())#define P_T(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), P_TYPE_T, PT))#define P_IS_T(obj) ...转载 2018-10-19 10:41:37 · 301 阅读 · 0 评论 -
GObject [4] 子类继承
其实子类继承也就是基于父类创建一个子类,创建类的方法还是和前面一样,同样需要一个实例结构体,一个类结构体,属性的隐藏也是一样的。上文创建的HWDList类相当于是GObject的子类,那现在的继承问题就是创建一个类,这个类的父类是HWDlist。同样的,子类可以继承父类的属性和方法。...原创 2018-10-19 10:33:52 · 266 阅读 · 0 评论 -
GObject [3] 子类对象私有属性的模拟-隐藏
1、隐藏什么,为什么要隐藏?隐藏的就是非类类型数据,也就是不是我们要封装成类的数据。隐藏以后就简化了.h文件,.c文件复杂了,使用类的人当然是希望他要看到的.h文件越简单越好。而.c这部分代码通常是第三方并不关注的。2、如何隐藏?方法很多,这里写出两种。第一种,很简单,加上注释 /*private*/ 和/*public*/第二种,将上一篇的例子进行隐藏以后的结果如下:...原创 2018-10-19 10:15:31 · 185 阅读 · 1 评论 -
GObject [二] 简单封装一个类
简单说,GObject就是一个让c语言实现面向对象的工具。或者是让GObject子类化的过程以下就是步骤:1、在.h文件中包含<glib-object.h>2、在.h文件中创建实例结构体和类结构体,以封装一个类。3、在.h文件中定义P_TYPE_T宏,声明p-t-get-type函数。p:项目缩写 T:名称 比如: HW_TYPE_DLIST4、在.c文...原创 2018-10-19 10:08:56 · 349 阅读 · 0 评论 -
GObject [一] 命名规范
1、创建一个结构体,结构体名可以这样:_项目缩写结构体名,例如 struct _HWDlist{}; // HW为项目缩写;Dlist是这个结构体的名称,首字母大写为了不用每次都写那么麻烦,可以在结构体定义上面使用typedef进行类型重命名。例如:typedef struct _HWDlist HWDlist;2、文件的命名,可以将文件名命名成:项目缩写-文件名,例如:hw-...原创 2018-10-19 09:48:04 · 211 阅读 · 0 评论 -
GObject[7] 闭包-GClosure
一、回调函数首先得知道回调函数的知识,C语言回调函数。#include <stdio.h>#include <stdlib.h>#include <string.h> static intstr_compare (const void *s1, const void *s2){ char *str1 = *(char **)...原创 2018-10-16 13:10:56 · 478 阅读 · 0 评论 -
C语言回调函数
回调函数就是 被调用者调用调用者提供的函数。比较有名的是C标准库提供的qsort函数。qsort函数的定义如下void qsort (void *base, size_t nmemb, size_t size, int (*compar) (const void *, const void *));第四个...转载 2018-10-16 11:11:37 · 188 阅读 · 0 评论 -
GObject[5] 接口
1、接口不是用来搞代码复用以简化对象设计的,而是用来简化对象的上层建筑的设计。2、接口的使用很简单,只要把一个类继承这个接口,然后实现接口中的方法。3、接口的模拟大致分为三个部分:接口申明 接口定义 接口使用4、接口的申明,以下代码(my-iusb.h)就申明了一个MyIUsb的接口,其实也和封装一个类差不多。实力结构体,空的就行。 类结构体,里面第一句要指出父类是GTyp...原创 2018-10-18 14:27:34 · 227 阅读 · 0 评论 -
typedef的使用
typedef可以说是为已有类型定义别名,以我自己的理解,有两种情况。1、一般用法,定义已有类型的别名,就是给已经存在的类型取一个新的名字。typedef 已有类型 别名;例如: typedef int int1;可以给结构体取新的名字:typedef struct _HWDlist HWDlist; //结构体定义struct _HWDlist{ int x;...原创 2018-10-15 13:08:44 · 220 阅读 · 0 评论 -
函数指针与指针函数
函数指针:是指向函数的指针int A(void){ return 1;}int main(){ //定义了一个函数指针,这个函数指针指向的函数返回值为int类型,参数为void int (*p)(void); // 将函数指针p指向了函数A p = A; //通过函数指针p调用函数 p();}指针函数:是函数的返回值类型为...原创 2018-10-15 11:57:36 · 227 阅读 · 0 评论 -
GTimer计时器
GTimer只是个计时器,当您需要量测两个执行时间点的间隔时就可以使用,例如程序执行的开始与结束时间,您可以使用g_timer_new()建立一个新的GTimer,若不再需要时则使用g_timer_destroy()加以销毁。在g_timer_new()之后,会自动启动计时,您也可以使用g_timer_start()再度启动计时,并于g_timer_elapsed()被调用时,传回自启动后的...转载 2019-07-18 14:18:35 · 1193 阅读 · 0 评论