1.1 C和C++语言的起源、特点、关系与讲解范畴

1.C语言的起源和特点

C语言是在B语言的基础上发展起来的,B语言是1971年在一种叫PDP-11/20的非常庞大的机器上实现的语言,这个语言的发明者是贝尔实验室的研究员KenThompson(肯·汤普森),然后用B语言写了UNIX操作系统。B语言过于简单,功能有限,所以在1972—1973年之间,贝尔实验室的D.M.Ritchie(丹尼斯·里奇)在B语言的基础上设计了C语言。1973年,KenThompson和D.M.Ritchie两人合作把UNIX90%以上的内容用C语言改写。

C语言的最突出特点如下:

(1)效率高。一般比汇编代码效率低10%~20%。当然,程序效率越高越好。

(2)C语言可以直接访问物理地址,进行位操作,可以直接对硬件操作,因此C语言既具备高级语言的功能,也具备低级语言的功能,可以用来写系统软件,这是非常厉害的,同时也是语言灵活性的表现。

2.C++语言的起源和特点

C++语言实际是为了增强C语言的功能而出现的,在C++语言中,引入了许多C语言中没有的特性,如类、虚函数等,并且C++这个名字在1983年才被正式确认。此后在1989年、1990年,C++一直在不断改进中,C++语言象征着C语言的变化和改进。

随着C++语言不断的发展,这个期间出现了C++标准库并被包含到C++标准中,从而使C++的功能得到了很大的增强。

1998年,C++标准委员会正式发布了第一个C++标准,这个版本的C++被认为是标准C++,主流的C++编译器也都支持这个版本的C++,所以很多人称这个版本为C++98(1.0)。

中间还有一些小改进,2003年发布了C++标准第2版,也叫C++03,这个版本属于错误修正版,但本质上与C++98是相同的语言。

时间的车轮在不断往前走,又过了很多年,到了2011年,新的C++标准正式发布,这个版本人们叫它C++11(2.0)。与C++98比较,C++11变化非常大,增加了很多新特性,语法差别也非常大,甚至都有不认识这门语言的感觉。这也说明C++语言改进的脚步从未停止。2014年,C++14标准也获得通过,在C++11基础上,增加了一些比较核心的特性,和C++11比是有一定的改动,但远不及从C++98到C++11变化大。2017年,推出了C++17标准,也是在C++14基础上增加不少新特性。所以,能够看到,这些年C++新标准的推出速度还是比较快的。

C++98版本以及以前版本的C++,一般称为传统C++,而从C++11开始的C++,一般称为现代C++。

C++语言的特性:封装性、继承性、多态性。严格来说,这三个特性是面向对象程序的特性,如果当前听不懂这些词汇,不要紧,等讲到第3部分C++时就懂了,但是,这三个特性确实是在面试C++软件工程师时最常考的内容,先让读者有个印象,本书在第3部分还会进一步详细介绍这些特性。

3.C语言和C++语言之间的关系

可以简单理解为“C++语言是C语言的超集”,或者反过来说“C语言是C++语言的子集”,也就是说,C语言的所有内容都可以在C++中使用,C语言中的内容是后续学好C++语言的基础,所以,本书第2部分正好从C语言讲起。

4.C语言和C++语言的讲解范畴

本书第2部分——C语言,主要是讲解C语言的各种语法,也就是基础知识,这一部分占整本书的篇幅比较小。

本书第3部分——C++语言,占整本书的大部分篇幅,主要分两大块内容讲解:

(1)对C++语言语法的学习,让读者能够正确地读懂、书写C++程序。

(2)对C++标准库的学习,让读者能够利用C++标准库中提供的大量现成的功能来实现各种目的,避免重复造轮子。

同时,在C++语言这部分,不仅会讲解传统的C++98标准的开发知识,也会讲解C++11/14/17新标准的开发知识,当讲解到新标准的开发知识时,会有专门的说明,告诉读者当前讲解的内容属于哪个C++新标准。