程序设计教程:用C++语言编程(第4版)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.3 C++语言概述

1.3.1 C++语言的特点

C++语言是从C语言发展而来的。C语言是一种支持过程式程序设计的高级程序设计语言,它是由贝尔实验室的Dennis Ritchie为编写UNIX操作系统而设计的一种系统程序设计语言,受到UNIX被广泛使用的影响,C语言后来成为一种被普遍用于各种类型应用程序编写的程序设计语言。C语言既有高级语言的优点,如提供了类型机制和结构化流程控制成分,又有低级语言(如汇编语言)才具有的一些描述能力,如数据的二进制位操作和内存地址操作等。C语言是一种编译型语言,与其他高级语言相比,C语言具有简洁、灵活、高效等特点。

C++语言是贝尔实验室的Bjarne Stroustrup为能进行面向对象程序设计而设计的一种高级程序设计语言,它保留了C语言的所有成分和特点,并在C语言的基础上增加了一些更好的语言成分,特别是增加了支持面向对象程序设计的语言成分。C++语言既支持过程式程序设计,又支持面向对象程序设计,属于一种混合语言。

C++语言也是一种编译型语言,与C语言一样,C++语言的主要特点是灵活和高效。C++的灵活性体现为它对使用者的限制较少,易于发挥使用者的创造性;C++的高效体现为它提供的一些语言成分(如指针等)能产生高效的目标代码,并且,它很少对程序做运行时的合法性检查(如数组下标越界等),从而减少了程序运行时的开销。

从某种程度上讲,C++的特点也是它的缺点,它对使用者的要求较高。C++的灵活性导致C++语言不易把握,特别是对一些使用不当易导致错误的用法不加限制,程序设计的初学者往往不知道何时使用何种语言成分来解决何种问题,他们对语言使用不当将会造成不良后果。C++的高效则把保证程序正确运行的责任交给了程序设计者,程序设计者必须对各种可能导致程序运行错误的因素进行仔细考虑和处理。当然,保证程序的正确性是程序设计者义不容辞的责任,不过,这要花费程序设计者很多的精力,增加了他们的负担。在有些语言中根本不提供可能造成不良后果的一些做法(如指针运算),从而减少了产生不正确程序的可能性,当然,这是以牺牲灵活性和效率为代价的。

关于C++语言,本教程作者认为:对较好地掌握了基本程序设计思想和技术的程序设计“高手”来说,C++是一个很好的语言;而对刚刚从事程序设计的“新手”而言,C++是一个非常糟糕的语言。也就是说,评价C++语言时,应该先评价使用C++的人的程序设计素质,只有较好地掌握了程序设计基本思想和技术的人才能很好地使用C++语言来进行程序设计,而培养程序设计素质正是本教材的初衷。

本教程之所以采用C++,是因为C++是一种使用广泛并支持基本的程序设计思想、概念和技术的程序设计语言,与其他程序设计语言相比,用C++语言编写的程序效率高,并且它支持多种程序设计范式。本教程在介绍C++语言时,主要强调C++语言对基本程序设计思想、概念以及技术的支持,而对C++语言一些不利于养成良好编程习惯的做法不予重点介绍,尤其是对属于C++语言“文化”范畴的内容不予过分强调。

国际标准化组织(ISO)于1998年为C++制定了国际标准(C++98),并于2011年以后对它进行了修订和扩展,得到了新的国际标准(如C++11、C++14以及C++17等)。本教程中大部分关于C++的描述是按C++国际标准给出的,有些描述则是基于微软公司的Visual C++给出的,而Visual C++的实现并没有完全按照国际标准来实施,请读者在阅读本教程时注意这一点。