linux c面向对象分析

我写驱动从来不理解驱动的代码流程,就是根据框架,就像堆积木直接写好。

最近好好的看了看linux内核的源代码,以及高焕堂先生的UML+OOPC嵌入式C语言开发精讲

,才发现原来c功能这么强大。

举例

struct k_object{

struct file_operations fops;

void* data;

void* others;

};


struct aa{


struct k_object* kobj;

}

类继承是通过包含来实现的。

它们的访问是这样的,

子类访问父类

struct aa tst;tst->kobj

父类访问子类

container_of()

这里提醒下,根据父子类的创建时间(即生存周期)它们有两种关系,组合和包含。

组合是子类创建时才创建父类,这样子类销毁时父类也没了,严格来讲,这不是父子关系?????。感觉linux使用的是这种方式。,有待考证

而包含是父类先创建,子类创建时将kobj的指针指向父类。父类不会随着子类的销毁而销毁。

多态是通过接口函数来实现的。

tst->kobj->fops = fread();



阅读更多
上一篇网上看到的一些学习建议
下一篇linux面向对象分析(二)
想对作者说点什么? 我来说一句

面向对象开发

2014年04月27日 24KB 下载

没有更多推荐了,返回首页

关闭
关闭