前边分析machine的注册和选择,发现如果 不了解qom系统是很难分析的。
qom系统的说明在include/qom/object.h中。看注释估计是个中国人写的
系统用于创建新的类型和对象,也就是我们在面向对象系统里面说的class,和object, 另外系统还实现了接口继承(可以多继承)。
下面我们来看下qom这个面向对象系统是如何实现的。
首先我们来剖析下面向对象系统的特点。
首先面向对象系统把方法和数据组成一个结构,叫类(class), 类描述的信息有两种
1 数据
2 方法
如何把数据于方法关联起来了,最好的办法就是传参,面向对象语言于面向过程语言的的区别在于方法是不是属于类,其实面向过程也可以实现面向对象,例如下面的例子
class MyClass {
public:
int a;
void setA(int a){
this->a = a;
}
}
要想用面向过程的语言实现上面的类似面向对象功能该如何写呢,如下
typedefine struct MyClass {
int a ;
void (*setA)(MyClass *this, int a);
} MyClass
MyClass myclass;
void setA(MyClass *this, int a) {
this->a = a;
}
myclass.setA = setA;
所以我们要想用c实现一个面向对象的系统,我们需要做到如下几点
1 对于一个class,我们要知道它的具体方法实现,如 MyCl