看《C++ Primer Plus》时整理的学习笔记,部分内容完全摘抄自《C++ Primer Plus》(第6版)中文版,Stephen Prata 著,张海龙 袁国忠译。只做学习记录用途。
目录- 说明
- 1.1 c++简介
- 1.2 c++简史
- 1.3 可移植性和标准
- 1.4 程序创建的技巧
c++ 融合了3种不同的编程方式:
- C 语言代表的过程性语言;
- C++ 在 C 语言基础上添加的类代表的面向对象语言;
- C++ 模板支持的泛型编程。
20世纪70年代早期,贝尔实验室的 Dennis Ritchie 在旧语言的基础上开发了 C 语言,将低级语言的效率、硬件访问能力和高级语言的通用性、可移植性融合在了一起。C 语言具有结构化编程方法的特性(如for
循环、while
循环、do while
循环、if else
语句等)、遵循自顶向下的设计原则(将大型程序分解为多个小型程序,任务模块化)。
20世纪80年代,同在贝尔实验室的 Bjarne Stroustrup 在 C 语言的基础上开发出了 C++ 语言。C++ 融合了 OOP(Object Oriented Programming)、泛型编程和传统的过程性方法;实际应用时不一定遵循自顶向下的设计原则,更多的是使用自下向上,从低级组织(如类)到高级组织(如程序)的编程方法。OOP 强调的是编程的数据方面,泛型编程强调的是独立于特定数据类型,这些都有助于模块化和创建可重用代码。
1.3 可移植性和标准程序可移植性存在两个方面的障碍:一是硬件、二是语言上的差异(编程语言也存在方言)。第一个障碍很多情况下是无法避免的,因此与特定硬件相关的程序一般是不可移植的;针对第二个障碍,可以通过制定一个通用的标准来进行制约。
美国国家标准局(American National Standards Institude, ANSI)在1990年设立了一个委员会(ANSI X3J16),专门负责制定C++标准。国际标准化组织(ISO)很快也加入了这个行列,创建了ANSI/ISO,致力于制定C++标准。
1998年,C++ 标准委员会发布了第一个国际标准 ISO/IEC 14882:1998,该标准常被称为 C++98。其后几年,委员会针对第一版中的诸多问题进行修订、减少多义性后,于2003年发布了 C++ 标准第二版 ISO/IEC 14882:2003,常被称为 C++03。由于 C++03没有改变语言特性,因此一般使用 C++98 表示 C++98/C++03。2011年,新的 C++ 标准 C++11 面世(ISO/IEC 14882:2011),新增了众多特性,例如正则表达式、标准线程库、auto
关键字、更好的 union
支持等。
编写以及执行 C++ 程序的大体流程如下:
-
使用文本编辑器编写程序(源代码);
-
使用编译器翻译源代码,将源代码翻译为机器语言,生成目标代码文件;
-
将目标代码与其他代码链接起来,例如所用库函数的目标代码以及一些标准的启动代码,生成可执行代码。
有些C++实现提供了集成开发环境(Integrated Development Environments, IDE),例如 Microsoft Visual C++,使得开发人员能够在主程序中管理程序开发的所有步骤;IDE提供了用于创建源代码文件的文本编辑器、用于生成可执行文件的编译器和链接器以及其他资源,如项目管理和调试功能,这些任务也可以在命令行环境中通过调用合适的工具来完成。常见实现的源代码文件的扩展名如下表: