错误处理是一个略显繁杂的主题,它的内容和影响都远远超越了语言特性的层面,而应归结为程序设计技术和工具的范畴。不过C++还是提供了一些有益的功能,其中最主要的一个工具就是类型系统本身。在构建应用程序时,
除了函数(见1 4节)、类(见2 3节)和枚举(见2 5节)之外,C++还提供了一种称为命名空间(namespace)的机制,一方面表达某些声明是属于一个整体的,另一方面表明它们的名字不会与其他命名空间中的名字冲突。例
C++支持一种名为分离编译的概念,用户代码只能看见所用类型和函数的声明,它们的定义则放置在分离的源文件里,并被分别编译。这种机制有助于将一个程序组织成一组半独立的代码片段。其优点是编译时间减到最少,并
一个C++程序可能包含许多独立开发的部分,例如函数(见1 3节)、用户自定义类型(见第2章)、类层次(见4 5节)和模板(见第5章)等。因此构建C++程序的关键就是清晰地定义这些组成部分之间的交互关系。第一步也
[1] 本章内容在[Stroustrup,2013]的第8章有更加详细的描述。[2] 把有关联的数据组织在一起(struct或者class);参见2 2节。[3] 在class中区分接口部分和实现部分;参见2 3节。[4] 结构struct其实
除了类之外,C++还提供了另一种形式简单的用户自定义类型,使得我们可以枚举一系列值:其中,枚举值(如red)位于其enum class的作用域之内,因此我们可以在不同的enum class中重复使用这些枚举值而不致引起混
union(联合)是一种特殊的结构(struct),它的所有成员被分配在同一块内存区域中,因此,union实际占用的空间就是它最大的成员所占的空间。显然,同一时刻union中只能保存一个成员的值。例如,下面的程序实现了
上面这种将数据与其操作分离的做法有其优势,比如我们可以非常自由地使用它的数据部分。不过对于用户自定义类型来说,为了将其所有属性捏合在一起,形成一个真正的类型,在其表示形式和操作之间建立紧密的联系还
构建新类型的第一步通常是把所需的元素组织成一种数据结构。下面是一个struct的示例:这是Vector的第一个版本,其中包含一个int和一个double*。Vector类型的变量可以通过下述形式进行定义:仅就v本身而言,它的用
我们把用基本类型(见1 5节)、const修饰符(见1 7节)和声明运算符(见1 8节)构造出来的类型称为内置类型(built-in type)。C++语言的内置类型及其操作非常丰富,不过相对来说更偏重底层编程。这些内置类型的
[1] 本章内容在 [Stroustrup,2013]的第5~6章、第9~10章和第12章有更加详细的 描述。[2] 不必慌张,一切知识都会随着时间推移变得逐渐清晰;参见1 1节。[3] 要想写出漂亮的程序,你不需要知
C++提供了一套用于表示选择和循环结构的常规语句。例如,下面是一个简单的函数,它首先向用户提问,然后根据用户的回应返回一个布尔值:与<<运算符(输出)的含义和作用相对应,>>运算符用于输入数据,cin是标准
元素类型为char的数组可以声明如下:类似地,指针可以声明如下:在声明语句中,[ ]表示……的数组,*表示指向……。所有数组的下标都从0开始,因此v包含6个元素:v[0]到v[5]。数组的大小必须是一个常量表达式(
C++支持两种不变性概念:const:大概的意思是我承诺不改变这个值。主要用于说明接口,这样在把变量传入函数时就不必担心变量会在函数内被改变了。编译器负责确认并执行const的承诺。constexpr:大概的意思是在编
声明语句把一个名字引入它的作用域中:局部作用域(local scope):声明在函数(见1 4节)或者lambda(见5 5节)内的名字称为局部名字(local name)。局部名字的作用域从声明它的地方开始,到声明语句所在的块
每个名字和每个表达式都有自己的类型,类型决定了名字和表达式所能执行的操作。例如,下面的声明把inch的类型指定为int,也就是说,inch是一个整型变量。声明(declaration)是一条语句,负责为程序引入一个新的
如果我们打算在C++程序中完成某些任务,最好的方式就是调用函数。要想准确描述某项操作的细节,把它定义成函数是最优选择。需要注意的是:函数必须先声明后使用。一条函数声明语句需要完成三项任务:指定函数的名
我们能接触到的最小的C++程序如下所示:这段代码定义了一个名为main的函数,该函数既不接受任何参数,也不做什么实际工作。在C++中,花括号{}表示成组的意思,上面的例子里它指出函数体的首尾边界。从双斜线 开
C++是一种编译型语言。顾名思义,要想运行一段C++程序,需要首先用编译器把源文件转换成目标文件,然后再用连接器把目标文件组合成可执行程序。一个C++程序通常包含多个源代码文件,简称为源文件(source file)
本章简要介绍C++的符号系统、C++的存储和计算模型以及如何把代码组织成程序。这些语言特性支持C语言中绝大多数常见的编程模式,我们称之为面向过程的程序设计(procedural programming)。