第1章 引入面向对象方法 1
1.1 计算机程序设计语言的发展 4
1.2 面向对象方法学 6
1.2.1 软件系统的复杂性 6
1.2.2 简化系统的复杂性 6
1.2.3 面向对象开发方法的基础 7
1.2.4 面向对象开发方法的优点 8
1.3 分析、设计和实现 8
1.3.1 面向对象分析OOA 8
1.3.2 面向对象设计OOD 9
1.3.3 面向对象实现OOP 9
1.3.4 面向对象的程序设计方法与结构化程序设计方法的比较 9
1.4 C++创建类 10
本章小结 11
习题 11
第2章 创建对象 12
2.1 编写C++程序 12
2.1.1 C++程序实例 12
2.1.2 C++标识符 14
2.1.3 C++程序成分 15
2.1.4 程序的编辑、编译、连接和执行 18
2.2 基本数据类型 19
2.2.1 基本数据类型 19
2.2.2 常量 21
2.2.3 变量 28
2.3 数组 29
2.3.1 一维数组 30
2.3.2 二维数组 34
2.3.3 字符数组 38
本章小结 41
习题 41
第3章 运算符与判定结构 43
3.1 运算符 43
3.1.1 算术运算符 44
3.1.2 赋值运算符 46
3.1.3 一元运算符 47
3.1.4 比较运算符 49
3.1.5 逻辑运算符 50
3.2 数据的输入与输出 51
3.2.1 I/O流 51
3.2.2 预定义的插入符与提取符 51
3.2.3 简单的I/O格式控制 54
3.3 条件结构 56
3.3.1 if...else结构 57
3.3.2 switch...case结构 61
3.4 循环结构 62
3.4.1 while循环 62
3.4.2 do...while循环 63
3.4.3 for循环 64
3.4.4 break与continue语句 67
本章小结 70
习题 70
第4章 函数与类 72
4.1 函数 72
4.1.1 函数的基本概念 72
4.1.2 形式参数和实际参数 80
4.2 访问区分符 82
4.2.1 抽象和封装 82
4.2.2 使用访问区分符实现抽象和封装 84
4.3 静态变量和静态函数 89
4.3.1 静态变量 89
4.3.2 静态函数 91
4.4 友元函数和友元类 91
4.4.1 友元函数 92
4.4.2 友元类 93
本章小结 94
习题 95
第5章 构造函数和析构函数 97
5.1 函数 97
5.1.1 函数概述 97
5.1.2 函数原型 98
5.1.3 函数参数 100
5.1.4 默认参数 101
5.2 类的构造函数 102
5.2.1 类的初始化 102
5.2.2 构造函数的需要性 103
5.2.3 构造函数的使用 103
5.2.4 缺省构造函数 104
5.2.5 带参数的构造函数 106
5.2.6 重载构造函数 107
5.2.7 类成员初始化的问题 107
5.2.8 构造类成员 109
5.2.9 复制构造函数 110
5.3 析构函数 113
本章小结 114
习题 114
第6章 指针和引用 115
6.1 指针变量的定义 115
6.2 指针变量的引用 116
6.3 地址运算 117
6.4 指针和数组 118
6.4.1 指向数组元素的指针 118
6.4.2 指向二维数组的指针 119
6.4.3 指向一个由n个元素所组成的数组指针 119
6.4.4 字符指针 120
6.4.5 指针数组 121
6.5 指针与动态内存分配 123
6.6 引用 124
6.7 对引用使用地址操作符 124
6.8 引用对象 126
6.9 用引用传递函数变量 128
6.9.1 用指针使swap()工作 129
6.9.2 用引用实现swap() 130
6.10 返回多个值 131
6.11 用引用返回值 132
6.12 用引用传递提高效率 133
本章小结 136
习题 136
第7章 继承 137
7.1 继承的定义 137
7.1.1 继承和派生 137
7.1.2 派生语法 138
7.1.3 私有与保护 140
7.2 构造函数与析构函数 140
7.3 向基类构造函数传递变量 142
7.4 重定义函数 145
7.5 多继承 148
7.5.1 多继承的工作原理 148
7.5.2 继承的模糊性 149
7.5.3 虚拟继承 150
7.5.4 多继承的构造顺序 153
7.6 私有继承 155
本章小结 157
习题 158
第8章 多态性 160
8.1 多态性概述 160
8.1.1 多态的类型 160
8.1.2 多态的实现 161
8.2 函数重载 161
8.3 运算符重载 165
8.3.1 运算符重载为成员函数 166
8.3.2 运算符重载为友元函数 169
8.4 虚函数 172
8.4.1 一般虚函数成员 172
8.4.2 虚析构函数 175
8.5 抽象类 175
8.5.1 纯虚函数 175
8.5.2 抽象类 176
8.6 程序实例 177
8.6.1 运算符重载的实例 177
8.6.2 虚函数使用的实例 185
本章小结 192
习题 192
第9章 流类库与输入输出 194
9.1 流及其类库简介 194
9.2 标准输出 197
9.2.1 使用预定义的插入符 197
9.2.2 使用成员函数put()输出一个字符 198
9.2.3 使用成员函数write()输出一个字符串 199
9.3 标准输入 200
9.3.1 使用预定义的提取符 200
9.3.2 使用成员函数get()获取一个字符 201
9.3.3 使用成员函数read()读取一个字符串 202
9.4 格式化输入和输出 202
9.4.1 设置流的格式化标志 202
9.4.2 格式输出函数 204
9.4.3 操纵符 205
9.5 磁盘文件的输入和输出 206
9.5.1 磁盘文件的打开和关闭操作 207
9.5.2 文件的读写操作 208
9.5.3 随机访问数据文件 210
本章小结 212
习题 213
第10章 模板 214
10.1 概述 214
10.2 函数模板 215
10.2.1 模板说明 215
10.2.2 函数模板的定义与实例化 215
10.2.3 重载函数模板 218
10.3 类模板 219
10.3.1 类模板的定义与实例化 219
10.3.2 类模板作为函数参数 222
10.3.3 在类族中使用类模板 223
10.4 关于类模板的一个完整例子 225
10.5 C++标准模板库简介 232
10.5.1 与C++标准模板库有关的概念和术语 232
10.5.2 向量 233
10.6 名字空间 237
10.6.1 定义名字空间 237
10.6.2 名字空间的使用 238
本章小结 240
习题 241
第11章 异常处理 242
11.1 异常情况的产生 242
11.2 C++异常处理的实现 244
11.2.1 异常的抛出 244
11.2.2 异常的捕获 244
11.2.3 异常处理的执行过程 245
11.2.4 异常规格说明 247
11.2.5 异常的再抛出 248
11.3 异常处理中的构造与析构 248
本章小结 250
习题 250
附录1 C++中的关键字 251
附录2 运算符优先级 252
附录3 ASCII字符集 253