本文主要是介绍Gobject tutorial 四,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Class initialization process
Initialization process of TNumberClass
TNumber是abstract类型,不能直接实例化,也不能直接创建其class。但,当第一次创建其衍生类的实例时,TNumbe classr就会被初始化。
对于TNumberClass的初始化流程如下:
- 在应用程序main函数启动之前,GObjectClass完成初始化。
- 为TNumberClass分配内存空间。
- TNumberClass的父类(GObject)被拷贝到TNumberClass。
- TNumberClass的初始化函数t_number_class_init被调用。
Initialization process of TIntClass
TIntCllass 初始化开始前,其父类TNumberClass已完成初始化。在应用程序第一次调用g_object_new(T_TYPE_INT,...)时,TIntClass会进行初始化。
TintClass的初始化流程如下:
- 为TIntClass分配内存。由于Tint对象是final类型,在其类定义中除了父类成员外,再无其他成员变量,所以TIntClass与其父类TNumberClass实际上占用同一块空间。
- 将TIntClass的父类(TNumberClass)拷贝到TIntClass中。
- 调用类初始化函数t_int_class_init,此函数会重写其父类TNumberClass中的方法函数。
这篇关于Gobject tutorial 四的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!