1.1 C++简介
C++融合了3种不同的编程方式:
1.C(过程性语言)
2.OOP(面向对象语言)
3.templata(泛型编程)
1.2 C++简史
随着计算机硬件的发展,引出了更大、更复杂的程序,而这些程序在程序管理和维护方面带来了新的问题。在这样的背景下,C语言出现了,引领人们进入了结构化编程时代。C能生成简洁、快速运行的程序,并提供了处理硬件问题的能力
1.2.1 C语言
为开发UNIX操作系统需要一门能够生成简洁、快速的程序,并能有效控制硬件。传统的汇编语言依赖于计算机的内部机器语言,直接操作硬件,因此只能针对特定的计算机处理器。UNIX是为了在不同的计算机(或平台)上工作而设计的。编译器将高级语言翻译成特定计算机的内部语言。由此开发了C语言
1.2.2 C语言编程原理
计算机语言要处理的两个概念——数据和算法
数据是程序使用和处理的信息,算法是程序使用的方法
如图:
C语言是过程性语言,强调的是编程的算法方面,从概念上说,过程化编程首先要确定计算机应采取的操作,然后使用编程语言来实现这些操作
C语言采用结构化编程,解决了早期编程语言(如FORTRAN和BASIC)组织混乱的问题
C语言还有一个新原则是自顶向下的设计(将大型程序分解成小型、便于管理的任务。如果其中一项任务任然过大,则将它分解为更小的任务)
1.2.3 面向对象编程
OOP与强调算法的过程性编程不同的是,OOP强调的是数据。OOP不像过程性编程那样,试图使问题满足语言的过程性方法,而是试图让语言来满足问题的要求。其理念是设计与问题的本质特性相对应的数据格式
在C++中,类是一种规范,它描述了这种新型数据格式,对象是根据这种规范构造的特定数据结构
通常,类规定了可使用哪些数据来表示对象以及可以对这些数据执行哪些操作
OOP程序设计方法首先设计类,它们准确地表示了程序要处理的东西。例如,绘图程序可能定义表示矩形、直线、圆、画刷、画笔的类。类定义描述了对每个类可执行的操作,如移动圆或者旋转直线。然后就可以设计一个使用这些类的对象的程序。
从低级组织(如类)到高级组织(如程序)的处理过程叫做自下而上的编程
OOP编程不仅将数据和方法合并成类定义。例如,OOP还有助于创建可重用的代码。信息隐藏可以保护数据。多态可以为运算符和函数创建多个定义。继承可以使用旧类派生出新类
OOP不同于过程性编程,它不将重点放在任务上,而是放在概念上
OOP语言有大量有用的类库,C++真正的优点之一是:可以方便地重用和修改现有的、经过仔细测试的代码
1.2.4 C++和泛型编程
泛型编程与OOP的目标相同,即使重用代码和抽象通用概念的技术更简单
OOP强调的是编程的数据方面,而泛型编程强调的是独立于特定数据类型
OOP是一个管理大型项目的工具,而泛型编程提供了执行常见任务(如排序)的工具
1.2.5 C++的起源
C++是C语言的超集,这意味着任何有效的C程序都是有效的C++程序。它们之间有些细微的差异,但无足轻重
OOP部分赋予了C++语言将问题所涉及的概念联系起来的能力,C部分则赋予了C++语言紧密联系硬件的能力
1.3 可移植性和标准
可移植性:如果在不修改代码的情况下,重新编译程序后,程序将运行良好,则该程序是可移植的
移植性方面的两个障碍:1.硬件特定的程序不可移植(将依赖于硬件的部分放在函数模块中可以最大限度地降低可移植性的问题:这样只需重新编写这些模块即可)。2.标准问题(建立统一的C++标准)
ANSI C与对应的C++规则之间存在一些差别,但这种差别很小。实际上,ANSI C加入了C++首次引入的一些特性,如函数原型和类型限定符const
1.4 程序创建的技巧