大咖助阵|LMOS:用面向对象的思想开发 C 语言程序
LMOS
该思维导图由 AI 生成,仅供参考
你好,我是 LMOS。
在“ LMOS 说 C 语言”的上篇里,我向你分享了 C 语言的起源,它与 UNIX 操作系统的联系,以及与 C 语言简单和困难相关的语言特性。今天我想和你聊聊,既然 C 语言是一把锋利但考验使用者技巧的瑞士军刀,我们可以拿它做什么,又怎么才能把它用好。
C 语言能干什么?
对于“C 语言能干什么”这个问题,我的回答是:C 语言能干一切其他语言能干的事。
C 语言自身的特性使得它能完全操作计算机所有的资源,因此它生来就是开发操作系统等底层核心软件的。不仅仅是开发操作系统,还有一些数据库和一些其他高级编程语言的编译器、解析器等。C 语言简单的语法,被 C++、Java、Go、JS 等语言效仿。其实从 C 语言的语言特性就可以看出来,它属于高级语言中的低级语言,又是低级语言中的高级语言,能适应一切底层开发。
然而,C 语言既然能做一切底层开发,就一定能做一切上层开发,只是对开发者的能力要求远高于 Java、Go 这些高级语言。其实,所有的高级语言都有共同的目标,就是降低开发者的学习使用成本和心智负担,从而降低软件的开发和维护成本。比如,Java 用虚拟机实现了一次编译处处运行,用垃圾内存回收机制解决了程序员使用内存的困难,不用时刻担心内存没有释放。这些归根结底是为了降低软件开发成本。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
C语言的面向对象编程思想是本文的重点。文章首先介绍了C语言的强大功能,可以高效实现操作系统、数据库等工程实践。然后对比了面向过程和面向对象的编程思想,指出C语言虽然是面向过程的,但也可以实现面向对象的编程方法。接着通过实例详细讲解了面向对象的封装和继承特性在C语言中的实现。作者以操作系统中的锁和内存管理数据结构为例,展示了如何用C语言实现封装和继承。文章最后强调了C语言的潜力,鼓励读者将其与工程实践相结合,尝试用C语言开发操作系统、数据库等工程。整体而言,本文深入浅出地介绍了C语言的面向对象编程思想,为读者提供了实用的技术指导和启发。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《深入 C 语言和程序运行原理》,新⼈⾸单¥59
《深入 C 语言和程序运行原理》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(3)
- 最新
- 精选
- =读完这篇文章后,最好的描述就是“捅破窗户纸”。 这学期,因为学校课程的原因,看了许多内核代码,内核代码中基于C语言的封装、继承特别多,这种继承在数据结构上体现得非常明显,数据结构A会继承数据结构B,数据结构A又会被其他数据结构继承…… 虽然大一时学过C语言,但是面对内核代码中繁多的数据结构继承依然感觉不适应,经过一个学期对内核代码的阅读,对基于C语言的封装与继承算是习惯了,但也只是一种感性的认知,感觉和它隔了一层窗户纸,但自己始终捅不破这层窗户纸。今天看了这篇文章后,最大的感叹就是“原来是这样”,真有一种自己琢磨了许久终于对一件事物有了些浅薄的认识,一位前辈直接鞭辟入里,把最本质、最深入的内容直接扒开来展示给你的感觉。2022-01-0418
- 白花风信子老师好哇!读完后对C中简单实现面向对象的操作有了一些具体的了解,但是我还有几个问题希望老师能帮忙解答一下QAQ。 1. “你可能想问:难道我们要每种数据结构都写一套加锁、解锁的代码吗?当然不是。我们只需要在其他结构里包括这个 MLock 就行了,相当于继承 MLock 类。” 老师这段话的意思是在struct里面包含另外的struct就能实现继承的功能,但是在面向对象里面,这样的操作应该是has-a,而继承是is-a。请问has-a和is-a的实质是类似的吗?这种has-a和is-a的区分只是在设计思想上的区别嘛? 2. 关于封装和继承的访问权限,只是由编译器设置的访问权限嘛? 3. 关于多态的实现,应该就是虚函数表叭,但是C语言按上面的继承方式实现起来好像就是直接在struct里面添加新的函数了?2022-01-0922
- Y面向对象是一种编程思想,C需要也可以实现,就是麻烦一点。2022-02-04
收起评论