由c语言转到c++,我们需要做什么?

毫无疑问,c语言和c++是两种不同的语言,但是又有着千丝万缕的联系。语法上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语言的方式去写c++代码。How and Why?

我们首先来说c++的优势是什么

c++拥有封装继承多态三大特性。

1、封装。封装指的是我们可以在类中将我们不希望外界调用的函数或者成员变量设置成私有(private)或者保护(protected)成员的形式,而外界需要调用的设置成公共成员(public)的形式,这样不仅保护了我们的函数不被改变,并且也告诉后来者不必去动我的私有和保护成员的函数和变量。

2、继承。继承指的是一个类被定义了之后,可以去由其他有需要的类去继承父类的成员公共或者受保护成员的变量和函数,这样使得我们很多函数和变量不必去重复定义,减少代码量。

3、多态。多态指的是定义在父类内的虚函数,可以被子类重新定义,这个过程我们称之为“重写”,这样做的好处是我们可以不必多次在每个文件中去定义逻辑相同的函数,大大提高了函数的重用。

此外,c++还拥有独特的命名空间这一概念。这个在解决变量命名重复方面起着很大的作用。

说完这三大特性,我想上面两个问题也就解决了。由于c++拥有相对于c语言来说的三大特性提供能量,程序必然比啥都没有的c语言简洁许多。c++可以对c语言说:你有的我有,你没有的我还有,气不气!

三、一些建议

此处是我在学习c语言和c++初期感到疑惑的一些问题,我把他分享给大家。

1、在学习c++之前我有必要学习c语言吗?

一口吃不出个胖子,任何事情都要循序渐进。在我来看,确实是有必要的,至少基本语法是要了解的。在学完c语言再去看c++的书你会发现,有大概半本的内容是你在学习c语言的时候学到的,这样学起来相当轻松。

2、我有c语言基础,那我该怎么学习c++呢?

在学习c++初期,大部分人犯了同一种错误,就是真的把c++当作c语言来学,学来学去学到最后用c++写出来的代码还是和c语言一样的结构。显然这样学是不对的。学习c++我觉得切入点一定是从类切入,这样你学一段时间就会发现,c++和c语言完全不同。类可以说是c++的精髓,不妨在学习的时候贯穿始终。

3、我真的有必要学习c++吗?

若是有时间我建议学一学,毕竟技多不压身,但是前提是不要丢了自己很了解的语言,因为那可能是你主要的阵地,这个顶多算加分项。你想想,自己写的单片机串口程序,上传到自己写的上位机,看着自己检测到的数据编程一幅幅美妙的图形,这是一个多么幸福的时刻。这段话不仅限送给纠结于学不学c++,其他的语言也一样。

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 黑客帝国 设计师:上身试试 返回首页