qemu2的qom系统分析(-)对象系统

前边分析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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TangGeeA

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值