目录 1
第1章 第一个C++程序 1
1.1 像程序员那样思考 1
1.1.1 计算机只做你要求它做的事情 1
1.1.2 确定程序有何用途 1
1.1.3 写出等价的C++语句 2
1.1.4 一些重要定义 3
1.2 C++有何特点 5
1.3.1 输入程序语句 6
1.3 生成C++程序 6
1.3.2 生成程序(编译并链接) 7
1.3.3 测试程序 8
1.3.4 根据需要进行修订 8
1.4 安装C++编译器 9
1.5 示例1.1打印一条消息 9
1.5.1 如果使用RHIDE环境 9
1.5.2 如果使用Microsoft Visual Studio 10
1.5.3 幕后玄机 11
1.7 示例1.2:多行打印 13
1.6 换到下一行 13
1.7.1 幕后玄机 14
1.8 保存数据:C++变量 15
1.9 数据类型入门 16
1.10 示例1.3:温度转换 18
1.10.1 幕后玄机 19
1.10.2 优化的版本 21
1.11 变量名和关键字 22
1.12 小结 23
2.1 数据类型 25
第2章 决策,决策 25
2.2 在程序中进行决策 28
2.3 if和if-else 28
2.4 示例2.1:是奇数还是偶数 31
2.4.1 幕后玄机 31
2.4.2 优化代码 32
2.5 循环入门 33
2.6.1 幕后玄机 36
2.6 示例2.2:打印1~N 36
2.7 C++中的真和假 37
2.8 递增操作符(++) 38
2.9 语句和表达式 39
2.10 布尔(短路)逻辑入门 40
2.11 示例2.3:测试一个人的年龄 42
2.11.1 幕后玄机 42
2.12 math库入门 43
2.13 示例2.4:质数测试 43
2.13.1 幕后玄机 44
2.13.2 优化程序 45
2.14 小结 46
第3章 好用的、全功能的for语句 48
3.1 用于计数的循环 48
3.2 for循环入门 49
3.3 大量例子 50
3.4 示例3.1:用for循环来打印1~N 51
3.4.1 幕后玄机 52
3.6 动态声明循环变量 53
3.5 for的语句块 53
3.7 示例3.2:使用for执行质数测试 54
3.7.1 幕后玄机 55
3.8 for语句基础 57
3.9 小结 57
第4章 函数 59
4.1 函数的概念 59
4.2 函数调用和程序流程 60
4.3 函数使用基础知识 61
4.3.2 步骤2:定义函数 62
4.3.1 步骤1:声明函数 62
4.3.3 步骤3:调用函数 63
4.4 示例4.1:triangle数函数 64
4.4.1 幕后玄机 65
4.4.2 优化程序 66
4.5 示例4.2:质数函数 67
4.5.1 幕后玄机 68
4.6 局部变量和全局变量 70
4.7 递归函数 71
4.8 示例4.3:最大公因数 72
4.8.1 幕后玄机 74
4.9 示例4.4:素因子分解 75
4.9.1 幕后玄机 76
4.10 示例4.5:随机数生成器 79
4.10.1 幕后玄机 80
4.11 小结 81
5.1 C++数组入门 83
第5章 数组 83
5.2 初始化数组 84
5.3 基于零的索引 85
5.4 示例5.1:打印元素 86
5.4.1 幕后玄机 86
5.5 示例5.2:真的随机吗 87
5.5.1 幕后玄机 89
5.6 字符串和字符串数组 91
5.7 示例5.3:发牌程序#1 92
5.7.1 幕后玄机 93
5.8 示例5.4:发牌程序#2 94
5.8.1 幕后玄机 95
5.9 示例5.5:发牌程序#3 96
5.9.1 幕后玄机 98
5.9.2 优化程序 99
5.10 一些忠告 100
5.11 二维数组:矩阵 101
5.12 小结 102
6.1 指针的概念 103
第6章 指针 103
6.2 声明和使用指针 105
6.3 例6.1:倍增函数 107
6.3.1 幕后玄机 107
6.4 交换:另一个使用指针的函数 109
6.5 示例6.2:数组排序器 110
6.5.1 幕后玄机 113
6.6 指针算术 114
6.7 指针和数组处理 115
6.8.1 幕后玄机 117
6.8 示例6.3:数组清零 117
6.8.2 优化程序 118
6.9 小结 119
第7章 字符串:分析文本 121
7.1 计算机上的文本存储 121
7.2 获取正确的字符串 122
7.3 字符串处理函数 123
7.4 示例7.1:构建字符串 125
7.4.1 幕后玄机 126
7.5 读取字符串输入 128
7.6 示例7.2:获取数字 130
7.6.1 幕后玄机 130
7.7 示例7.3:转换成大写 132
7.7.1 幕后玄机 132
7.8 单独字符与字符串的比较 133
7.9 示例7.4:分析输入 134
7.9.1 幕后玄机 135
7.10 新的C++ string类 138
7.10.2 声明和初始化string类型的变量 139
7.10.1 添加string类支持 139
7.10.4 输入和输出 140
7.10.3 处理string类型的变量 140
7.11 示例7.5:使用string类型来构建字符串 141
7.11.1 幕后玄机 141
7.12 对string类型的其他操作 142
7.13 小结 144
第8章 文件:电子存储 146
8.1 文件流对象入门 146
8.3 示例8.1:将文本写入一个文件 148
8.2 引用磁盘文件 148
8.3.1 幕后玄机 149
8.4 示例8.2:显示一个文本文件 151
8.4.1 幕后玄机 152
8.5 文本文件与二进制文件的比较 153
8.6 二进制运算入门 155
8.7 示例8.3:随机写入 157
8.7.1 幕后玄机 158
8.8 示例8.4:随机读取 159
8.8.1 幕后玄机 160
8.9 小结 161
第9章 一些高级编程技术 163
9.1 命令行参数 163
9.2 示例9.1:从命令行显示文件内容 164
9.2.1 幕后玄机 165
9.3 函数重载 166
9.4 示例9.2:打印不同类型的数组 168
9.4.1 幕后玄机 169
9.5 do-while循环 169
9.6 switch-case语句 171
9.7 多个模块 172
9.8 异常处理 174
9.8.1 入门 174
9.8.2 处理异常:第一次尝试 175
9.8.3 try-catch异常处理 176
9.9.1 幕后玄机 178
9.9 示例9.3:为gcf添加异常处理 178
9.10 小结 180
第10章 面向对象入门 182
10.1 为什么要面向对象 182
10.2 字符串解析器 183
10.3 对象和类 184
10.4 另一个例子:Fraction类 185
10.6 继承或子类化 186
10.5 对象构造和析构 186
10.7 创建共享接口 188
10.8 多态性:真正的对象独立性 189
10.9 多态性和虚函数 190
10.10 重用性 191
10.11 小结 193
第11章 Fraction类 194
11.1 Point:一个简单的类 194
11.2 private:仅成员可用(保护数据) 196
11.3 示例11.1:测试Point类 198
11.4 Fraction类入门 199
11.3.1 幕后玄机 199
11.5 内联函数 202
11.6 查找最大公因数 203
11.7 查找最小公倍数 205
11.8 示例11.2:Fraction的支持函数 205
11.8.1 幕后玄机 206
11.9 示例11.3:测试Fraction类 208
11.9.1 幕后玄机 210
11.10 示例11.4:Fraction算术(加法和乘法) 211
11.10.1 幕后玄机 213
11.11 小结 214
第12章 构造函数 216
12.1 构造函数入门 216
12.2 多个构造函数(重载) 217
12.3 默认构造函数 218
12.4 示例12.1:Point类的构造函数 220
12.4.1 幕后玄机 221
12.5 示例12.2:Fraction类的构造函数 222
12.6 引用变量和参数(&) 224
12.5.1 幕后玄机 224
12.7 拷贝构造函数 226
12.8 示例12.3:Fraction类的拷贝构造函数 228
12.8.1 幕后玄机 229
12.9 小结 230
第13章 操作符函数 232
13.1 类操作符函数入门 232
13.2 操作符函数作为全局函数 234
13.3 利用引用来提高效率 236
13.4 示例13.1:Point类的操作符 238
13.4.1 幕后玄机 239
13.5 示例13.2:Fraction类的操作符 240
13.5.1 幕后玄机 242
13.6 使用其他类型 243
13.7 类赋值函数(=) 244
13.8 测试相等性函数(==) 245
13.9 类的“打印”函数 246
13.10 示例13.3:完整的Fraction类 247
13.10.1 幕后玄机 249
13.11 小结 251
第14章 new操作符和StringParser类 253
14.1 new操作符 253
14.2 对象和new 254
14.3 为数组数据分配空间 256
14.4 示例14.1:动态内存 257
14.4.1 幕后玄机 258
14.5 解析器设计(词法分析器) 258
14.6 示例14.2:StringParser类 262
14.6.1 幕后玄机 264
14.6.2 改进代码 265
14.7 小结 267
第15章 this关键字和string类 268
15.1 string类入门 268
15.2 类析构函数入门 269
15.3 示例15.1:一个简单的String类 270
15.3.1 幕后玄机 271
15.4 深拷贝和拷贝构造函数 273
15.5 this关键字 275
15.6 赋值操作符 276
15.7 写一个连接函数 278
15.8 示例15.2:完整的String类 279
15.8.1 幕后玄机 281
15.9 小结 282
第16章 继承 284
16.1 子类化 284
16.2 示例16.1:FloatFraction类 287
16.2.1 幕后玄机 289
16.3 FloatFraction类的问题 290
16.3.1 子类的默认构造函数 291
16.3.2 子类的拷贝构造函数 291
16.3.3 子类的赋值函数 292
16.3.4 添加遗漏的构造函数 292
16.3.5 解决与基类的类型冲突 292
16.4 示例16.2:最终的FloatFraction类 293
16.4.1 幕后玄机 294
16.5 示例16.3:ProperFraction类 294
16.5.1 幕后玄机 296
16.6 private成员和protected成员 298
16.7 示例16.4:包含的成员(FractionUnits) 299
16.7.1 幕后玄机 300
16.8 小结 302
第17章 多态性:对象独立性 304
17.1 FloatFraction类的另一个思路 304
17.2 虚函数 305
17.3 示例17.1:修订的FloatFraction类 307
17.3.1 幕后玄机 309
17.3.2 改进代码 310
17.4 “纯virtual”和其他难点 311
17.5 抽象类和接口 312
17.6 cout为什么不是真正多态的 313
17.7 示例17.2:真正多态的printable类 314
17.7.1 幕后玄机 315
17.8 关于面向对象 317
17.9 写在最后 318
17.10 小结 318
附录A C++操作符 320
附录B 基本数据类型 323
附录C C++语法总结 324
C.1 直接量 324
C.2 基本表达式 324
C.3 基本语句 325
C.4 控制结构 325
C.5 特殊控制语句 327
C.7 函数声明 328
C.6 数据声明 328
C.8 类声明 329
附录D ASCII码 331
附录E 公共库函数 332
E.1 字符串函数 332
E.2 数据转换函数 333
E.3 单字符函数 333
E.4 数学函数 334
E.5 随机处理函数 334
附录F 术语表 335