第1章 程序设计与C++语言入门 1
1.1 程序及相关概念 1
1.1.1 计算机与用户(人) 1
1.1.2 算法 2
1.1.3 程序 3
1.2 程序设计 3
1.2.1 程序设计的基本概念 3
1.2.2 程序设计过程 4
1.2.3 程序设计方法 4
1.3 程序设计语言 7
1.3.1 机器语言 8
1.3.2 汇编语言 8
1.3.3 高级语言 8
1.3.4 编译型语言与解释型语言 8
1.3.5 C++语言 9
1.4 C++程序的结构 9
1.4.1 注释 9
1.4.2 预处理指示 9
1.4.3 以函数为单位的程序结构 10
1.4.4 以类为单位的程序结构 11
1.5 C++程序的实现过程 13
习题 14
第2章 内置数据类型与基本输入输出 15
2.1 数据类型概述 15
2.1.1 数据类型的基本概念 15
2.1.2 C++语言类型系统的基本特点 15
2.2 标识符概述 16
2.2.1 C++语言中的基本记号 16
2.2.2 标识符 17
2.3 常量和变量 18
2.3.1 变量和变量的声明 18
2.3.2 常量和常量的声明 19
2.4 内置数据类型 20
2.4.1 内置数据类型概述 20
2.4.2 字符类型常量和变量 21
2.4.3 整数类型常量和变量 22
2.4.4 浮点类型常量和变量 23
2.4.5 布尔类型常量和变量 23
2.4.6 字符串类型常量和变量 24
2.5 操作符与表达式 24
2.5.1 操作符与表达式的基本概念 24
2.5.2 各种操作符和表达式详解 26
2.6 类型之间的关系 29
2.6.1 隐式类型转换 30
2.6.2 显式(强制)类型转换 30
2.7 标准库的使用和简单的输入输出 31
2.7.1 输出 31
2.7.2 输入 31
2.8 应用举例 32
习题 32
第3章 语句与基本控制结构 34
3.1 语句及分类 34
3.1.1 声明语句 34
3.1.2 表达式语句 35
3.1.3 转移语句 35
3.1.4 块语句 36
3.1.5 空语句 37
3.2 选择结构 37
3.2.1 三种基本控制结构 37
3.2.2 if语句 38
3.2.3 switch语句 40
3.3 循环结构 41
3.3.1 while语句 42
3.3.2 do-while语句 43
3.3.3 for语句 43
3.3.4 循环中的break语句 44
3.3.5 continue语句 45
3.4 应用举例 46
习题 48
第4章 函数 51
4.1 概述 51
4.2 函数定义与函数原型 53
4.2.1 函数定义 53
4.2.2 函数原型 54
4.3 函数调用与参数传递 55
4.3.1 函数调用 55
4.3.2 参数传递 57
4.4 标识符的作用域 62
4.4.1 作用域的基本概念 62
4.4.2 作用域的具体规则 63
4.4.3 变量的声明与定义 64
4.4.4 名字空间 65
4.5 变量的生命期 66
4.6 预处理指示 69
4.6.1 文件包含 69
4.6.2 宏定义 69
4.6.3 条件编译 70
4.7 标准库函数 70
4.8 函数的接口设计和注释 71
4.8.1 前置条件和后置条件 71
4.8.2 函数的注释 71
4.8.3 函数的接口与实现 71
4.8.4 函数接口的设计 72
4.9 递归 73
4.9.1 什么是递归 73
4.9.2 递归的实现 74
4.9.3 汉诺塔问题 75
4.10 应用举例 76
习题 77
第5章 枚举、结构与类 79
5.1 简单数据类型与构造式数据类型 79
5.2 枚举类型 79
5.3 结构类型 81
5.3.1 结构类型的定义及其变量的声明和使用 81
5.3.2 结构变量的整体操作 83
5.3.3 层次结构 84
5.3.4 匿名结构类型 85
5.4 抽象、封装与信息隐藏 85
5.4.1 抽象 85
5.4.2 数据封装与隐藏 86
5.5 类与对象 89
5.5.1 类 89
5.5.2 对象的创建 94
5.5.3 对象的初始化 94
5.6 关于面向对象程序设计的若干基本问题 98
5.6.1 面向过程与面向对象 98
5.6.2 术语 102
5.7 应用举例 102
习题 105
第6章 数组与指针 107
6.1 数组类型 107
6.1.1 一维数组 107
6.1.2 二维数组 113
6.2 指针类型 120
6.2.1 基本概念 120
6.2.2 指针常量与指针变量 121
6.2.3 指针的运用 124
6.3 指针类型与数组 128
6.3.1 通过指针引用数组元素 128
6.3.2 数组作函数参数的进一步讨论 131
6.3.3 动态分配内存 133
6.3.4 二维数组与指针 136
6.4 main函数的形参 138
6.5 指向结构变量的指针 139
6.6 对象指针 140
6.6.1 基本概念 140
6.6.2 对象的动态创建和撤销 141
6.6.3 对象的复制 142
6.7 函数指针 143
6.8 应用举例 144
习题 149
第7章 字符串 151
7.1 C风格字符串 151
7.1.1 字符串常量 151
7.1.2 字符数组 151
7.2 C字符串操作 153
7.2.1 获得字符串长度 153
7.2.2 C字符串的复制 153
7.2.3 C字符串的比较 154
7.2.4 C字符串的连接 154
7.2.5 C字符串的类型转换 155
7.2.6 处理单个字符 156
7.3 string对象字符串 156
7.3.1 string对象的声明、初始化与赋值 157
7.3.2 string字符串的输入和输出 157
7.3.3 string字符串的长度 158
7.3.4 string字符串的比较 158
7.3.5 string字符串的子串 158
7.3.6 string字符串的连接 159
7.3.7 string对象转换成C字符串 159
7.4 应用举例 160
习题 161
第8章 继承与组合 164
8.1 继承的概念 164
8.2 C++中的继承 165
8.2.1 基本概念 165
8.2.2 继承实例 167
8.2.3 派生类中继承成员函数的重定义 172
8.2.4 继承层次中的构造函数和析构函数 172
8.3 组合 176
8.3.1 组合的语法和图形表示 176
8.3.2 组合与构造函数和析构函数 177
8.3.3 组合的实例 178
8.4 继承与组合的比较 182
8.5 多重继承与重复继承 182
8.5.1 多重继承 182
8.5.2 多重继承的构造函数 185
8.5.3 多重继承中存在的问题:名字冲突 186
8.5.4 重复继承 187
8.6 应用举例 189
习题 201
第9章 重载 205
9.1 函数重载 205
9.1.1 什么是函数重载 205
9.1.2 为什么要使用函数重载 209
9.1.3 使用函数重载时需要注意的问题 209
9.2 复制构造函数 213
9.2.1 复制构造函数的语法形式 213
9.2.2 复制构造函数的使用场合 213
9.3 操作符重载 224
9.3.1 C++操作符的函数特性 224
9.3.2 操作符重载的规则 224
9.3.3 类成员操作符重载 225
9.3.4 友元操作符重载 229
9.4 应用举例 232
习题 238
第10章 I/O流与文件 240
10.1 概述 240
10.1.1 何为I/O 240
10.1.2 应用程序、操作系统与I/O 240
10.1.3 标准I/O流cin和cout 241
10.1.4 文件I/O流 242
10.2 二进制文件I/O 245
10.2.1 文本文件I/O Vs.二进制文件I/O 245
10.2.2 二进制文件I/O 245
10.3 应用举例 248
习题 251
第11章 多态性与虚函数 252
11.1 绑定方式与多态性 252
11.1.1 基本概念 252
11.1.2 多态性的作用 253
11.2 虚函数 254
11.2.1 虚函数举例 254
11.2.2 使用虚函数的特定版本 256
11.2.3 虚析构函数 257
11.3 纯虚函数和抽象类 258
11.3.1 纯虚函数 258
11.3.2 抽象类 259
11.4 应用举例 259
习题 269
第12章 异常处理 271
12.1 异常处理概述 271
12.2 C++语言中的异常处理 272
12.2.1 throw语句 272
12.2.2 try块与异常的捕获及处理 273
12.2.3 标准库异常类 285
12.2.4 异常说明(exception specification) 286
12.3 应用举例 287
习题 298
第13章 模板 300
13.1 泛型编程概述 300
13.2 函数模板 300
13.2.1 函数模板的定义 301
13.2.2 函数模板的实例化 301
13.2.3 函数模板与重载 303
13.3 类模板 305
13.3.1 类模板的定义 306
13.3.2 类模板的实例化 309
13.3.3 模板编译与类模板的实现 310
13.4 非类型模板形参 313
13.4.1 函数模板的非类型形参 313
13.4.2 类模板的非类型形参 313
13.5 应用举例 314
习题 326
第14章 标准模板库 328
14.1 概述 328
14.2 迭代器 329
14.3 容器 330
14.3.1 顺序容器 330
14.3.2 关联容器 341
14.3.3 容器适配器 348
14.4 泛型算法 351
14.4.1 算法简介 351
14.4.2 算法举例 354
14.5 应用举例 356
习题 364
附录A C++保留字表 366
附录B 标准ASCII代码表 367
附录C 常用数学函数 368
附录D C++标准库头文件 369
附录E 标准库泛型算法简介 370
附录F 主要术语英汉对照表 376
参考文献 378