1.1 C++ 简介
C++融合了三种不同的编程方式:C 语言代表的过程性语言、添加到面向对象语言、C++ 模板支持的泛型编程。学习C++ 需要扩展思维。
1.2 C++ 简史
计算机语言要处理两个概念:数据和算法。如图1.2.2 C语言编程原理
- 为了解决混乱的“意大利面条式编程”,开发出有序的编程方法——结构化编程:将循环、分支等限制为行为良好的一个结构。
- 另一个原则是自顶向下的设计。将大型程序不断分解,直至成为小型、便于管理的任务,鼓励开发程序单元来表示各个模块。
结构化编程技术反映了过程性编程的思想,根据执行的操作来构思一个程序。
1.2.3 面向对象编程
与强调算法的过程性编程不同,OOP强调数据,理念是设计与问题的本质特性相对应的数据格式。
C++中类是一种规范,描述的是数据格式。对象是根据这种规范构造的特定的数据结构。OOP程序设计方法首先设计类,准确地表示要处理的东西,描述对每个类可执行的操作。这种从低级组织(类)到高级组织(程序)的处理过程叫做自下向上的编程。
OOP还有助于创建可重用代码,隐藏信息保护数据,用多态为运算符和函数创建多个定义,用继承在旧类上派生新类。OOP将重点放在表示的概念上,而不是任务上。
1.2.4 C++ 和泛型编程
泛型指的是创建独立于类型的代码,提供执行常见任务的工具,OOP则是管理大型项目的工具。与OOP目标相同——使重用代码和抽象通用概念的技术更简单。与强调数据的OOP不同,泛型强调的是独立于特定的数据类型。
1.3 可移植性和标准
由于硬件不同,一个编写好的C++程序需要在新平台上重新用此平台专门的编辑器重新编译。在不修改代码的条件下,若编译好的程序运行良好则该程序是可移植的。可移植性有两个障碍:硬件和语言上的差异。直接控制硬件的程序肯定不能直接移植,座椅最好写成函数。而语言上的差异好比方言,需要标准来规范。1998年制定出了C++98,03年进行了修改,不过都称为C++98。2011年新出了C++11,目标是消除不一致性。
1.4 程序创建的技巧
一个C++程序运行起来的过程大概是:
- 在文件中写程序,此文件就是源代码。
- 编译源代码。将源代码翻译为机器语言,形成目标代码。
- 将目标代码与其他代码如C++库链接起来。形成可执行代码。
不同的操作系统源代码的扩展名不同,编译链接的命令也不同。
1.5 总结
- 为使编程更简单,C语言新增了控制结构、函数等特性来支持结构、模块化程度更高的方法;C++新增了面向对象和泛型编程,有助于提高模块化和创建可重用代码。
- 为使众多C++实现兼容,制定标准规定语言必须具备的特性、行为、库函数、类、模板来实现可移植性。
- C++ 的编译过程。