由c语言转向c++,我们需要做什么?
Posted 嵌入式Linux
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了由c语言转向c++,我们需要做什么?相关的知识,希望对你有一定的参考价值。
在此送大家一份小礼物,公众号内回复linux0001即可获得一本Linux电子教程
毫无疑问,c语言和c++是两种不同的语言,但是又有着千丝万缕的联系。
语法上c语言与c++一脉相承,但是实际用起来效果或者程序结构又完全不一样
,这让我们产生了不小的疑惑,c和c++到底是什么关系呢?我们应该怎样去学习这两种语言?
目录
一、c语言和c++一脉相承
二、c++面向对象的优势
三、一些建议
首先我们要明确,c语言和c++是有血缘关系的
。这个我们可以追溯到早期,在早期c++是没有自己的编译器的,c++要通过编译器编译成c语言代码,再由c语言编译器编译成机器代码,随着后来越来越重视面向对象的语言的发展,c++也就拥有了自己的一套编译体系。虽然在现在我们尽量把这两种语言区别开,但是好像编译器并不给面子,windows下的微软编译器(cl.exe),Linux下的G++编译器,mac下的Clang编译器都同时支持c和c++编译,统称为C/C++编译器。编译上的区别我们平时不容易察觉到,但是在实际程序编写时,我们会发现这两种语言的基本语法完全一样,c++完全可以使用c语言的数据类型,没错,使用c语言的方式去写c++完全没问题,但是我们不能完全这样做,具体原因我将在下文介绍。
其次我们要知道,c++是作为c语言的一个拓展存在的
。在科技不断发展的今天,c语言已经不能够完全满足众多项目的编程需要,所以科学家为了满足生产力的需要,c++就应运而生了。我们在说这两种语言的区别的时候,总会笼统的说一句c语言面向过程,c++面向对象,这是没有错的。面向过程的意思就是要求我们去用基本的库去写一些功能来完成我们的项目,面向对象的意思是我们去利用前辈留给我们的财产(指各种各样的库),去完成程序的设计。其实面向对象不仅仅是指我们会有丰富的库,这些库是基于编程语言的优势完成设计的,那么这样的话,我们作为使用库的程序员,同样可以利用语言的优势去写库留给有需要的人去用,我觉得这才是面向对象语言的核心。就c++来说,由于语言的本身的关系,不足以支持我们去写一些比较高级的通用库去完成功能。关于c++是怎么利用自身优势来完成库的编写,我将在下文介绍。
上文我们留了两个坑:
我们怎样利用c++的优势去完成代码的编写和我们为什么不能完全按照c语言的方式去写c++代码
。How and Why?
我们首先来说
c++的优势是什么
。(本段的内容截取自2月12号的推文《一个好的程序架构应该是什么样的?》)
1、封装。
封装指的是我们可以在类中将我们不希望外界调用的函数或者成员变量设置成私有(private)或者保护(protected)成员的形式,而外界需要调用的设置成公共成员(public)的形式,
这样不仅保护了我们的函数不被改变,并且也告诉后来者不必去动我的私有和保护成员的函数和变量
。
2、继承。
继承指的是一个类被定义了之后,可以去由其他有需要的
类去继承父类的成员公共或者受保护成员的变量和函数,
这样使得我们很多函数和变量不必去重复定义,减少代码量
。
3、多态。
多态指的是定义在父类内的虚函数,可以被子类重新定义,这个过程我们称之为“重写”,
这样做的好处是我们可以不必多次在每个文件中去定义逻辑相同的函数,大大提高了函数的重用
。
此外,c++还拥有独特的
命名空间
这一概念。这个在解决变量命名重复方面起着很大的作用。
说完这三大特性,我想上面两个问题也就解决了。由于
c++拥有相对于c语言来说的三大特性提供能量
,程序必然比啥都没有的c语言简洁许多。c++可以对c语言说:你有的我有,你没有的我还有,气不气!
此处是我在学习c语言和c++初期感到疑惑的一些问题,我把他分享给大家。
一口吃不出个胖子,任何事情都要循序渐进。在我来看,
确实是有必要的,至少基本语法是要了解的
。在学完c语言再去看c++的书你会发现,有大概半本的内容是你在学习c语言的时候学到的,这样学起来相当轻松。
在学习c++初期,大部分人犯了同一种错误,就是真的把c++当作c语言来学,学来学去学到最后用c++写出来的代码还是和c语言一样的结构。显然这样学是不对的。
学习c++我觉得切入点一定是从类切入
,这样你学一段时间就会发现,c++和c语言完全不同。类可以说是c++的精髓,不妨在学习的时候贯穿始终。
若是有时间我建议学一学,毕竟技多不压身,但是前提是不要丢了自己很了解的语言,因为那可能是你主要的阵地,这个顶多算加分项
。你想想,自己写的单片机
串口程序,上传到自己写的上位机,看着自己检测到的数据编程一幅幅美妙的图形,这是一个多么幸福的时刻。这段话不仅限送给纠结于学不学c++,其他的语言也一样。
已经看到这里啦!喜欢本文的小伙伴请点一下右下角的在看鼓励一下作者吧~
推荐阅读:
关注公众号,后台回复「1024」获取学习资料网盘链接。
欢迎点赞,关注,转发,在看,您的每一次鼓励,我都将铭记于心~
嵌入式Linux
以上是关于由c语言转向c++,我们需要做什么?的主要内容,如果未能解决你的问题,请参考以下文章
放弃Python转向Go语言:我们找到了以下9大理由
从C++转向最受欢迎的Rust语言
从C++转向最受欢迎的Rust语言
学c++,c语言将来能找那些工作啊?
什么是脚本语言
开发C/S架构用各种语言的优缺点有啥?