第2章 对象的创建与使用
本章介绍一些C++语法和程序构造概念,使读者能编写和运行一些简单的面向对象的程序。下一章,我们再详细介绍C和C++的基本语法。
首先通过学习本章,我们会对C++面向对象编程的风格有个基本的了解,进而明白人们热衷于这种语言的一些原因。这些足以引导读者读完第3章的内容。第3章中包含了大量的C语言细节,几乎是对C语言的详尽无遗的介绍。
用户定义的数据类型或类(class),是C++区别于传统过程型语言的地方。类是一种新的数据类型,用来解决特定问题。一旦创建了一个类,任何人都可以使用它而不需知道它的构造方式和工作原理细节。本章仅把类作为C++内置的另一种数据类型来使用。
通常将创建好的类存放在库里。本章会使用几个C++的类库。一个很重要的标准库是输入输出流库,可以用它从文件或键盘读取数据,并且将数据写入文件和显示出来。我们还将看到来自标准C++类库中的非常方便的string类和vector容器。到本章结束时,我们会发现使用预先定义好的类库是很容易的事情。
为了创建我们的第一个程序,我们必须先了解用于创建应用程序的工具。
2.1 语言的翻译过程
任何一种计算机语言都要从某种人们容易理解的形式(源代码)转化成计算机能执行的形式(机器指令)。通常,翻译器分为两类:解释器(interpreter)和编译器(compiler)。
2.1.1 解释器
解释器将源代码转化成一些动作(它可由多组机器指令组成)并立即执行这些动作。例如,BASIC就是一个流行的解释性语言。传统的BASIC解释器一次翻译和执行一行,然后将这一行的解释丢掉。因为解释器必须重新翻译任何重复的代码,程序执行就变慢了。为了提高速度,也可对BASIC进行编译。现在许多的解释器,诸如Python语言的解释器,先把整个程序转化成某种中间语言,然后由执行速度更快的解释器来执行[1]。
使用解释器有许多好处。从写代码到执行代码的转换几乎能立即完成,并且源代码总是现存的,所以一旦出现错误,解释器能很容易地指出。对于解释器,较好的交互性和适于快速程序开发(不必要求可执行程序)也是常被提到的两个优点。
当做大项目时解释性语言有某些局限性(而Python似乎是一个例外)。解释器(或其简化版)必须驻留内存以执行程序,而这样一来,即使是最快的解释器其速度也会变得让人难以接受。大部分的解释器要求一次输入整个源代码。这不仅造成内存空间的限制,而且如果语言不提供设施来隔离不同代码段之间的影响,一旦出现错误,就很难调试。
[1]解释器和编译器之间的界限非常模糊,尤其对Python来说,它具有编译语言的许多特点和功能,但它只是一种解释语言的快速转换。