第1章 从 C 过渡到 C++ 1
1.1 C 和 C++的不同之处 1
1.1.1 C++标准和编译器 2
1.1.2 C++注释 2
1.1.3 头文件 3
1.1.4 数据类型 3
1.1.5 解析作用域和变量声明 5
1.1.6 常量 6
1.2 C++的输入/输出 7
1.2.1 C++的 I/O 方法 7
1.2.2 C++的格式化 9
1.3 名称空间 13
1.4 小结 18
1.5 练习 19
1.6 编程项目 19
第2章 C++的增强功能 21
2.1 C++原型 21
2.2 内联函数 22
2.2.1 使用 C 的宏 22
2.2.2 使用内联函数 25
2.3 默认参数 27
2.4 函数重载 29
2.5 函数模板 32
2.6 小结 36
2.7 练习 37
2.8 编程项目 38
第3章 指针、引用和动态内存分配 42
3.1 C++指针 42
3.1.1 指针概念简介 42
3.1.2 C 和 C++指针的不同 45
3.2 引用 46
3.2.1 作为独立的变量的引用 46
3.2.2 把引用传递给函数 48
3.2.3 由函数返回引用 50
3.3 对常量使用引用和指针 51
3.4 动态内存分配 53
3.4.1 静态内存分配和动态内存分配 53
3.4.2 动态数组 55
3.5 案例研究:彩票随机数生成器 60
3.6 小结 68
3.7 练习 69
3.8 编程项目 71
第4章 类与对象 74
4.1 过程化编程与面向对象编程 74
4.2 C 和 C++数据结构 76
4.3 类 81
4.3.1 访问类成员 82
4.3.2 成员函数 84
4.3.3 在运行时分配对象 87
4.4 构造函数和析构函数 88
4.4.1 构造函数 88
4.4.2 类析构函数 90
4.5 案例研究:数据加密 93
4.6 小结 100
4.7 练习 101
4.8 编程项目 103
第5章 类的高级议题 106
5.1 向函数传递和从函数返回对象 106
5.2 副本构造函数 112
5.3 友元函数和类 117
5.3.1 友元函数 117
5.3.2 友元类 121
5.4 静态成员 124
5.4.1 静态数据成员 124
5.4.2 静态成员函数 127
5.5 this 指针 128
5.6 常量成员函数 131
5.7 小结 133
5.8 练习 134
5.9 编程项目 137
第6章 运算符重载 139
6.1 运算符重载的基础 139
6.2 运算符函数 141
6.3 重载二元运算符 143
6.4 重载一元运算符 151
6.5 重载流运算符 155
6.6 案例研究:交流电计算器 158
6.7 小结 167
6.8 练习 167
6.9 编程项目 169
第7章 继承 171
7.1 继承的基本原理 171
7.2 protected 访问指示符 174
7.3 构造和销毁派生类 175
7.4 多重继承 179
7.4.1 直接多重继承 180
7.4.2 间接多重继承 183
7.5 支配和重写基类 186
7.6 小结 190
7.7 练习 190
7.8 编程项目 194
第8章 合成 197
8.1 合成与继承 197
8.2 使用合成 198
8.3 构造和销毁合成类 202
8.4 组合使用继承和合成 208
8.5 案例研究:计算机系统配置程序 211
8.6 小结 220
8.7 练习 221
8.8 编程项目 223
第9章 多态性与虚函数 226
9.1 静态绑定与动态绑定 226
9.2 虚函数 230
9.3 抽象基类 234
9.4 虚析构函数 236
9.5 使用多态性 239
9.6 案例研究 240
9.7 小结 251
9.8 练习 251
9.9 编程项目 253
第10章 模板 255
10.1 类模板 255
10.1.1 模板参数 256
10.1.2 类模板的成员函数 257
10.1.3 在类模板中使用友元和静态成员 259
10.1.4 使用 void 指针 261
10.2 模板与继承 264
10.3 容器与迭代器 267
10.3.1 顺序容器 267
10.3.2 关联式容器 269
10.3.3 迭代器 270
10.4 标准模板库 273
10.5 小结 278
10.6 练习 278
10.7 编程项目 280
第11章 异常处理 282
11.1 异常处理的基本原则 282
11.2 使用 try-throw-catch 283
11.2.1 弹出和处理异常 286
11.2.2 异常规范 292
11.3 处理内存分配错误 294
11.4 异常和类 296
11.5 小结 301
11.6 练习 301
11.7 编程项目 303
第12章 文件 I/O 304
12.1 文件 I/O 处理的步骤 304
12.1.1 创建文件对象 304
12.1.2 打开文件 305
12.1.3 使用文件 308
12.1.4 关闭文件 308
12.2 顺序文件 308
12.3 随机访问文件 314
12.4 小结 317
12.5 练习 318
12.6 编程项目 319
附录 A C++关键字和同义词 321
附录 B C++运算符 324
附录 C 标准 C++库 326
附录 D 标准 C++算法 328
附录 E 单数问题的答案 331