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();



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值