超级大洋葱和你一起学 C++ Primer Plus——第一章 预备知识

本章内容包括

  • c语言和C++的发展历史和基本原理
  • 过程性编程和面向对象编程
  • C++是如何在c语言的基础之上添加面向对象概念的
  • C++是如何在c语言的基础之上添加泛型编程概念的
  • 编程语言标准
  • 创建程序的技巧

C++继承了c语言高效、简洁和可移植性的传统。C++的模板特性提供了另一种全新的编程方法——泛型编程。

1. C++简介

C++融合了3种不同的编程方式:
①c语言代表的过程式语言
②类代表的面向对象语言
③C++模板支持的泛型编程

如果先掌握了c语言,则在过渡到C++时,必须摈弃一些编程习惯。如果不了解c语言,则学习C++时需要掌握c语言知识、OOP知识以及泛型编程知识,但无需摈弃任何编程习惯。

2. C++简史

20世纪70年代,c和Pascal这样的语言引领人们进入了结构化编程时代,这种机制把秩序和规程带进了迫切需要这种性质的领域中。
20世纪80年代,人们也见证了一种新编程模式好的成长:面向对象编程(OOP)。
SmallTalk和C++语言具备这种功能。

2.1 C语言

20世纪70年代,贝尔实验室的Dennis Ritchie致力于开发UNIX操作系统,他希望呢有一种语言能够将低级语言的效率、硬件访问能力和高级语言的通过性、可移植性融合在一起,于是他在旧语言的基础上开发了C语言。

2.2 C语言编程原理

很多旧式程序的执行路劲很混乱,几乎不能通过阅读程序来理解它,修改这种程序简直是一种灾难。为了解决这种问题,计算机科学家开发了一种更有序的编程开发——结构化编程。C语言具有使用这种方法的特性。结构化编程将分支限制为一小组行为良好的结构。C语言词汇表中就包含了这些结构(for循环、while循环、do while循环和if else语句)。
另一个新原则是自顶向下(top-down)的设计。C语言的设计有助于使用这种方法。它鼓励程序员开发程序单元(函数)来表示各个任务模块。结构化编程技术反映了过程性编程的思想,根据执行的操作来构思一个程序。

2.3 面向对象编程

与强调算法的过程性编程不同的是,OOP强调的是数据。

在C++中,类是一种规范,他描述了这种新型数据格式,对象是根据这种规范构造的特定数据结构。通常,类规定了可使用那些数据来表示对象以及可以对这些数据进行哪些操作。

OOP程序设计方法首先设计类,他们准确地表示了程序要处理的东西。从低级组织(如类)到高级组织(如程序)的处理过程叫做自下而上的编程。

OOP编程并不仅仅是将数据和方法合并为帝国一。OOP代码还有助于创建可重用的代码,这将减少大量的工作。信息隐藏可以保护数据,使其免遭不适当的访问。多态让您能够为运算符和函数创建多个定义,通过编程上下文来确定使用哪个定义。继承让您能够使用旧类派生出新类。有时不一定使用自上而下的编程方法,而是使用自下而上的编程方法。

2.4 C++和泛型编程

泛型编程是C++支持的另一种编程模式。它与OOP的目标相同,即使重构用代码和抽象通用感念的技术更简单。不过OOP强调的是编程的数据方面,而泛型编程强调的是独立于特定数据类型。OOP是一个管理大型项目的工具,而泛型编程提供了执行常见任务(如对数据排序或合并链表)的工具。术语泛型是指的是创建独立于类型的代码。

2.5 C++的起源

C++也是在贝尔实验室诞生的,Bjarne Stroustrup于20世纪80年代开发出了这种语言,用他自己的话来说,“C++主要是为了我的朋友和我不必再使用汇编语言、C语言或其它现代高级语言来编程而设计的。它的主要功能是可以更方便地编写出好程序,让每个程序员更加快乐”。

Stroustrup加入了OOP特性和对C的泛型编程支持。C++是C语言的超集,这意味着任何有效的C程序都是有效的C++程序。

C++是在C语言的基础上添加OOP特性,您可以忽略C++的面向对象特性,但将错过很多有用的东西。

C++融合了OOP、泛型编程和传统的过程性方法。

3. 可移植性和标准

在不同电脑上,如果在不修改代码的情况下,重新编译后,程序将运行良好,则该程序是可移植的。

可移植性方面存在两个障碍,其中的一个是硬件。硬件特定的程序是不可移植的。可移植性的第二个障碍是语言上的差异

C++98,它不仅描述了已有的C++特性,还对该语言进行了扩展,添加了异常、运行阶段类型识别(RTTI)、模板和标准模板库(STL)。2003年,发布了C++标准第二版,这一版只是修订错误、减少多义性,并没有改变语言特性,这个版本常称为C++03。由于C++03没有改变语言特性,因此我们使用C++98表示C++98/C++2003。

C++11于2011发布,它增加了众多特性,另外,其目标是消除不一致性,让C++学习和使用起来更加容易。

4. 程序创建的技巧

  1. 使用文本编辑器写程序文件;
  2. 编译源代码;
  3. 将目标代码与其它代码链接起来。

超级大洋葱和你一起学 C++ Primer Plus——第一章 预备知识

参考链接:C语言编译过程详解

5. 总结

C语言新增了诸如控制结构和函数等特性,以便更好地控制程序流程,支持结构化和模块化程度更高的方法;而C++增加了对面向对象编程和泛型编程的支持,这有助于提高模块化和创建可重用代码,从而节省编时间并提高程序的可靠性。

C++的流行导致大量用于各种计算平台的C++实现得以面世;而ISOC++标准为确保众多实现的相互兼容提供了基础。

要创建C++程序,可创建一个或多个源代码文件,其中包含了以C++语言表示的程序。这些文件是文本文件,他们经过编译和链接后将得到机器语言文件,后者构成了可执行程序。