【c++教程】1.1-c++的介绍

我并不打算详细的介绍c++的诞生过程,以及c++的发展史,但是我还是预留出这样的一个章节,用于对完全不了解的人提供简单的介绍

1,什么是c++?

这是一门计算机程序设计语言,也就是人们常说的编程语言。如果要理解什么是编程语言,可以去寻找相关的资料。

2,c++是谁发明的,和c有什么关系?

c++是Bjarne Stroustrup于1979年开始设计开发的,本身算是c的继承和发展。最早的时候希望,所有的c程序,都可以直接放入c++中运行。在20多年以前(21世纪初期),曾经有做过和c融合的打算(也即希望能够和c完全兼容),但是最终这个想法没能成功,以至于今天和c渐行渐远了。

3,和c语言的关系怎么样?

从相似程度,或者是亲缘关系上来看,可能都有人会认为c和c++应该是亲如一家,密不可分的。但是实际上c和c++的关系不仅不好,而且很多时候是水火不容的。只有完全不懂c++,而且也不懂c的人,才会认为c/c++是一个整体。

原因在于使用c的人大多抱有一种偏见:认为c++繁琐复杂,而且还挤压了c的生存空间,所以对c++心怀怨恨。

而使用c++的人则有很多认为:c语言已经过时了,我们是更好的c,(在应用的层面上)c已经被取代没有存在的必要了。

所以,一般来说,在专家级的层面上,c或者c++只会选择一门,你很难看到一个人真正的同时精通c和c++(虽然他自己可能这样声称),而事实上也确实如此,c和c++的最顶级的专家,也不是同一批人。

4,学c++以前需要先学c吗?

答案是,100%的没有必要。c++从来不会希望你在c++中去写c或者c风格的c++代码,即使写出来的代码是可以运行的,但是也绝对不会建议你这样做。所以,在学c++以前学习c是完全不正确的(这句话的意思不是学习c没有用,而是为了掌握c++所以去学习c没有任何价值)。

事实上,会有很多人建议你先学c,可能是因为这些人就是c语言的人,他们根本就不希望你学c++。或者如果你在某些培训机构上课的话,他们也可能会让你先学c,一方面是增加课程内容,另一方面他们是希望你未来找工作的时候,可以有更多的选择。但是这样考虑的主要目的是为了赚钱,而非是为了有利于学习c++。

注意:在30多年以前(20世纪90年代)的时候并非如此,那个时候由于先是c知名,后来才流行c++的缘故,所以在那个年代,可以看到有很多c语言的使用者,转而尝试使用c++。因此在那个年代的著作中,也会有很多人尝试去指导如何先学会了c,然后再学习c++。但是在现如今已经不会这样做了。

5,所有的c代码都可以放在c++中运行吗?

答案是不可以。但是总的来说,截止到目前为止,大多数c代码,尤其是规范的c代码还是都可以在c++中运行的,但一定不是全部。

举个最简单的例子,c++的关键字是要远多于c的,你在c中写了占用c++关键字的代码,在c中可以运行,在c++中一定不可以运行。

当然除此之外,c和c++还有一些其他语法上的差异,主要是一些在c中认为是不建议使用的代码,在c++中直接被禁止使用了。因此这部分的代码放在c++中也是不能运行的。但总的来说,c代码能实现的功能,一定可以在c++中实现,而且将c代码转换成为可以在c++中运行的代码,是一件很容易的事情。

6,关于c++的版本和查看方式

现在主要的c++版本有98,11,14,17,20,23

98是c++标准化的第一个版本,我们称之为c++ 1.0

11是非常重要的一个大版本,我们称之为c++ 2.0

20也许是一个重要的版本,或许可以称之为c++ 3.0

一般来说,我们建议使用11以后的版本,查看方式如下

#include <iostream>

int main()
{
    // 打印__cplusplus中保存的内容,可以看到c++的版本
    // 如果没有定义__cplusplus,说明这并不是一个c++的编译器
    std::cout << __cplusplus << std::endl;
    return 0;
}

注意:17和20的区分在于2017年7月份,如果打印__cplusplus的结果为大于等于201707,那么说明目前支持的是17以后的版本,也就是2a,并非只是17。 

7,我听说已经有一些新特性可以用了,但是我的编译器还不支持,我应该怎么办?

事实上,使用的编译器落后于当前标准的最新规定,这在c++中是常有的事情,而且这经常会发生,没什么好在意的。

你完全不需要为了那些最新的东西,特意去换新的编译器。事实上,几乎全部新的东西,在旧版本都是可以实现的。之所以要使用新版本,只不过是它可能实现起来更容易,或者更好,但很少会是非使用不可的情况。因此,如果你的编译器还没有支持那些最新的东西,不必着急,等就好了,等一段时间,最多等几年,自然而然就可以实现了。

而且,如果别的编译器都还没有实现新功能,只有某个编译器实现了新功能,那么去立即改为使用它也并不一定是一件好的事情。我们都应该知道,创作新的东西,是需要花费很多时间和精力的。匆匆忙忙赶出来的东西,未必是好的,纵使它是最早的。

某种意义上,在很多c++的使用者看来,c++11时至今日都还是新的。即使它已经很老了,已经有十多年的历史了。但是,有的时候,我们还会称之为c++11的新特性。这在很多不太懂c++的人眼中,看起来不仅是可笑的,而且可能是无法理喻的。他们甚至还会很惊讶的问你,难道你不知道现在已经有c++17和c++20了吗?c++11已经过时了,你怎么还管它叫做新的呢?所以说这种人不懂c++啊,对于c++来说,二十多年前的东西都还是好的呢。而且二十多年前的东西还比现在的很多速成品更有价值。

8,学习c++适合用来找工作赚钱吗?

答案是100%的不适合。如果你的目的只是为了赚钱,那么最好现在立刻放弃c++。这一点非常重要。

原因在于,c++的投入多,回报少。一个没有任何计算机基础的人,如果学习的是其他东西的话(例如java或者前端),可能半年就能达到一个相对不错的水平了。一年就可以开始找工作赚钱了。但是,在c++中,这是几乎不可能实现的。

因此,如果你的目的就是奔着学习计算机去找工作的话,随便去学点别的什么吧,都要比学c++强。

当然,我再解释一次,我没有说c++不可能赚到钱,如果你有决心能坚持学习上3,4年的话(也就读一个大学本科的时间),当然吃一口饭应当是不愁的。我只是在强调,希望半年到1年内就要找到工作的话,不适合来学习c++。

点击查看全部c++教程​​​​​​​ 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值