我与C++的故事

做为一位物联网工程专业的大学,在大一刚开始时我就开始接触C语言,在一年的学习过程中我领略到了C语言面向结构的编程思想,在单片机开发中C语言发挥着其他语言无可替代的作用,因此虽然学习难度较高我也一直在努力的学习相关的语法知识和编程技巧。在日复一日的相处中渐渐的对于我也发现了我的这位"初恋"也有着一些缺点,一是编写复杂程序时难度较高,二是没有"对象"。

面向对象和面向过程编程是两大主流编程思想,有人说面向对象的编程思想可以在编写大型项目时实现事半功倍的效果,为了了解这种全新的编程思想,我把目光转向了C语言的兄弟C++,C++被人们称作带类的C。由于先前有过C语言的编程基础,所以我入门C++的过程还算顺利,由于C语言的语法格式在C++中大多都被兼容,因此在最初学习C++时我往往会不自主的使用C语言中的库函数和语法,例如输出成员变量时我总会不自主的使用printf,但是在掌握了cout的输出语法后发现相比于printf的输出方式,cout显得更加方便,以至于现在编写C语言程序时会不自主的使用cout,在不断的学习过程中我开始庆幸自己有着C语言的编程基础,否则以我的理解能力估计很难坚持到现在。在学习C++的过程中我也渐渐理解到了面向对象编程方式的优势,封装、继承、多态、抽象,这些特性提高了编写程序的效率,这些特性大都依托类来实现,所以早期我一直认为类的这些特性在C语言中定然无法实现,但直到后来我在拜读Linux内核源码时突然发现,C语言中的结构体也能够在一定程度上实现上述的四大特性。例如在公开头文件中只声明一个结构体类型,但是不定义其成员,随后将具体的结构体定义放在源文件中,这样一来外部代码只能通过内核提供的函数接口来操作对应的结构体指针,无法访问其内部成员。这就在一定程度上复刻了C++中的封装特性。实现继承操作时只需要让子结构体的第一个成员为父结构体即可。多态特性通过定义一个包含多个函数指针的结构体,然后在主函数中定义一个指向这个结构体的指针,这样就可以在不同情况下灵活调用所需函数。

这些编程思想对我产生了极大的启发,我从中渐渐认识到不管时C语言、C++还是其他编程语言,它们被创造出来都是为了提高程序的编写效率,不同语言的编写格式各有千秋,但是编码思想是可以在一定程度上实现迁移的

相关推荐
isyangli_blog3 小时前
OpenDayLight (Carbon 版本) 启动与组件安装
开发语言·php
vb2008113 小时前
FastAPI APIRouter
开发语言·python
Benszen3 小时前
KVM虚拟化解决方案
开发语言·perl
会编程的土豆3 小时前
Go 语言反射(Reflection)详解
开发语言·后端·golang
東雪木3 小时前
多线程与并发编程 专属复习笔记
java·开发语言·笔记·java面试
MC皮蛋侠客4 小时前
C++17 多线程系列(五):C++17 并行算法——从串行到并行的零成本迁移
c++·多线程
杨充4 小时前
1.3 浮点型数据设计灵魂
开发语言·python·算法
噜噜噜阿鲁~4 小时前
python学习笔记 | 11.3、面向对象高级编程-多重继承
java·开发语言
basketball6164 小时前
Go 语言从入门到进阶:4. 数组和MAP使用方法总结
开发语言·后端·golang
春生野草5 小时前
反射、Tomcat执行
java·开发语言