1. 类的声明和定义:
// 声明
typedef struct _MyObjectClass {
GObjectClass parent_class;
} MyObjectClass;
// 定义
typedef struct _MyObject{
GObject parent_instance;
} MyObject;
typedef struct _MyObjectClass {
GObjectClass parent_class;
} MyObjectClass;
// MyObject当前的类,my_object前缀,G_TYPE_OBJECT父类
G_DEFINE_TYPE(MyObject, my_object, G_TYPE_OBJECT);
GObject 中的『类结构体』的作用是面向 GObject 类型系统声明一个『类』的类型,GObject 的『类结构体』通常需要从一个叫做 GObjectClass 的『类结构体』派生而成
2.成员变量/函数
声明变量:init函数安装g_object_class_install_property+枚举
获取/设置属性值:g_object_set/get_property
链接:[实现方法](https://blog.csdn.net/acs713/article/details/7644476)
声明函数:函数严格根据继承的父类设置
3. 构造函数
类的构造函数:
class_init: 成员函数的注册
_init:成员变量的注册
4. 析构函数
理解循环引用:ref/unref
调用父类的析构:G_OBJECT_CLASS (parent_class)
5. 常用宏
#define MY_IS_OBJECT(obj) (G_TYPE_CHECK_INSTANCE_TYPE(my_obj, my_object_get_type()))
[用C++类比](https://segmentfault.com/a/1190000003861212)
#define BOY(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),BOY_TYPE,Boy))
[Gobject对象强制转换为Boy对象](https://www.ibm.com/developerworks/cn/linux/l-gobject/)
[理解xxx_get_type](https://blog.csdn.net/weixin_41944449/article/details/81257259)
6. 创建对象
PMDList *list = g_object_new (PM_TYPE_DLIST,
"head", NULL,
"tail", NULL,
NULL);/* 要记得键值对参数之后,要以 NULL 收尾 */
7. 状态迁移
null->ready分配资源,
null->ready向上通知
ready->NULL向下通知
8. 继承机制
结构体之间的截取
参考链接
https://blog.csdn.net/yanbixing123/article/details/52970925 [C++理解Gobject]
http://garfileo.is-programmer.com/2011/7/14/gobject-notes.27977.html [系统学习GObject]