我与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++还是其他编程语言,它们被创造出来都是为了提高程序的编写效率,不同语言的编写格式各有千秋,但是编码思想是可以在一定程度上实现迁移的

相关推荐
倒头就睡的小比特4 天前
算法竞赛C++常用的STL
c++·算法
weilx12344 天前
C++笔记-文件IO-<fcntl.h>
c++
小羊没烦恼!4 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
伞伞悦读4 天前
【第38期】Python 模块与包详解:import、from、模块搜索路径、包结构和 __init__
开发语言·python
Smileyqp沛沛4 天前
前端?C++ ?较大差异基础罗列
c++·基础·前端转c++
C语言小火车4 天前
C/C++ 为什么需要编译器?
开发语言·c++
旖旎夜光4 天前
力控面试题 01.01: 判定字符是否唯一(位运算) —— 题解
c++·学习·算法·leetcode·力控
吞下星星的少年·-·4 天前
C++ 萌新语法入门篇
c++·算法比赛
霍霍的袁4 天前
【C++】map 和 set 的使用 | 从用法到底层
开发语言·c++·学习·visual studio
another heaven4 天前
【算法/C++ MD5算法能否逆解码?原理、C++实现与同类哈希算法对比】
c++·算法·哈希算法