第1章 计算机、互联网和万维网简介 1
1.1简介 2
1.2什么是计算机 2
1.3计算机组成 3
1.4早期的操作系统 4
1.5个人计算、分布式计算和客户/服务器计算 4
1.6互联网和万维网 5
1.7机器语言、汇编语言和高级语言 5
1.8 C和C++的历史 6
1.9 C++标准库 7
1.10 Java的历史 7
1.11 FORTRAN、COBOL、Pascal和Ada 8
1.12 Basic、Visual Basic、 VisualC++、C#和.NET 8
1.13主要的软件趋势:对象技术 9
1.14典型的C++开发环境 10
1.15关于C++和本书的几点说明 12
1.16试运行一个C++应用程序 13
1.17对象技术和UML的介绍 17
1.18本章小结 22
1.19 Web资源 23
第2章C++编程入门 30
2.1简介 30
2.2第一个C++程序:打印一行文本 31
2.3修改第一个C++程序 34
2.4另一个C++程序:整数相加 35
2.5内存的概念 38
2.6算术运算 39
2.7判断:相等运算符和关系运算符 42
2.8本章小结 46
第3章 类和对象介绍 55
3.1简介 55
3.2类、对象、成员函数和数据成员 56
3.3本章范例综述 57
3.4定义具有成员函数的类 57
3.5定义具有形参的成员函数 60
3.6数据成员、设置函数和获取函数 63
3.7用构造函数初始化对象 69
3.8一个类对应一个独立文件的可重用性 72
3.9接口与实现的分离 75
3.10用设置函数确认数据的有效性 80
3.11本章小结 84
第4章 控制语句(第Ⅰ部分) 90
4.1简介 91
4.2算法 91
4.3伪代码 91
4.4控制结构 92
4.5 if选择语句 95
4.6 if else双路选择语句 96
4.7 while循环语句 101
4.8算法详述:计数器控制的循环 102
4.9算法详述:标记控制的循环 107
4.10算法详述:嵌套的控制语句 116
4.11赋值运算符 120
4.12自增和自减运算符 121
4.13本章小结 123
第5章 控制语句(第Ⅱ部分) 138
5.1简介 138
5.2计数器控制的循环的要素 139
5.3 for循环语句 140
5.4使用for语句的例子 144
5.5 do while循环语句 148
5.6 switch多路选择语句 150
5.7 break和continue语句 157
5.8逻辑运算符 159
5.9==运算符与=运算符的混淆问题 162
5.10结构化编程总结 163
5.11本章小结 167
第6章 函数和递归入门 178
6.1简介 179
6.2 C++的程序组件 179
6.3数学库函数 181
6.4多参数函数定义 182
6.5函数原型和实参类型的强制转换 185
6.6 C++标准库头文件 187
6.7实例研究:随机数生成 188
6.8实例研究:博彩游戏和enum简介 193
6.9存储类别 196
6.10作用域规则 198
6.11函数调用堆栈和活动记录 200
6.12无参函数 203
6.13内联函数 204
6.14引用和引用参数 205
6.15默认实参 209
6.16一元作用域分辨运算符 211
6.17函数重载 212
6.18函数模板 214
6.19递归 216
6.20递归应用示例:Fibonacci数列 218
6.21递归与迭代 221
6.22本章小结 223
第7章 数组与C++标准库类模板vector 243
7.1简介 243
7.2数组 244
7.3声明数组 245
7.4使用数组的范例 246
7.5将数组传递给函数 259
7.6实例研究:利用数组存放成绩的类GradeBook 262
7.7采用线性查找法查找数组 268
7.8采用插值排序法排序数组 269
7.9多维数组 271
7.10实例研究:利用二维数组的类GradeBook 273
7.11C++标准库类模板vector的介绍 279
7.12本章小结 283
第8章 指针和基于指针的字符串 298
8.1简介 299
8.2指针变量的声明和初始化 299
8.3指针运算符 300
8.4用指针通过按引用传递方式将参数传递给函数 302
8.5用const修饰指针 306
8.6用按引用传递方式实现的选择排序 311
8.7 sizeof运算符 314
8.8指针表达式和指针算术运算 316
8.9指针和数组之间的联系 318
8.10指针数组 322
8.11实例研究:洗牌和发牌的模拟程序 322
8.12函数指针 327
8.13基于指针的字符串处理概述 332
8.14本章小结 340
第9章 类的深入剖析(第Ⅰ部分) 363
9.1简介 364
9.2 Time类实例研究 364
9.3类的作用域和类成员的访问 370
9.4接口与实现的分离 371
9.5访问函数和工具函数 372
9.6 Time类实例研究:默认实参的构造函数 374
9.7析构函数 379
9.8何时调用构造函数和析构函数 379
9.9 Time类实例研究:一个微妙的陷阱——返回对private数据成员的引用 382
9.10默认的逐个成员赋值 384
9.11软件重用 386
9.12本章小结 386
第10章 类的深入剖析(第Ⅱ部分) 392
10.1简介 393
10.2 const对象和const成员函数 393
10.3组成:对象作为类的成员 401
10.4 friend函数和friend类 406
10.5使用this指针 409
10.6 使用new和delete运算符进行内存的动态管理 414
10.7 static类成员 415
10.8数据抽象和信息隐藏 420
10.9容器类和迭代器 422
10.10代理类 422
10.11本章小结 425
第11章 运算符重载:字符串和数组对象 431
11.1简介 432
11.2运算符重载的基础知识 432
11.3运算符重载的限制 433
11.4作为类成员函数和全局函数的运算符函数之比较 434
11.5重载流插入运算符和流提取运算符 435
11.6重载一元运算符 438
11.7重载二元运算符 439
11.8实例研究:Array类 439
11.9类型转换 449
11.10实例研究:String类 450
11.11重载++和--运算符 460
11.12实例研究:Date类 461
11.13标准库中的string类 465
11.14 explicit构造函数 468
11.15本章小结 471
第12章 面向对象编程:继承 482
12.1简介 482
12.2基类和派生类 483
12.3 protected成员 485
12.4基类和派生类之间的关系 486
12.5派生类中的构造函数和析构函数 510
12.6 public、protected和private继承 516
12.7关于继承的软件工程 517
12.8本章小结 518
第13章 面向对象编程:多态性 523
13.1简介 524
13.2多态性实例 525
13.3类继承层次中对象之间的关系 526
13.4类型域和switch语句 540
13.5抽象类和纯virtual函数 541
13.6实例研究:应用多态性的工资发放系统 542
13.7(选学)多态性、virtual函数和动态绑定的底层实现机制 556
13.8实例研究:应用向下强制类型转换、dynamic-cast、typeid和type-info并使用多态性和运行时类型信息的工资发放系统 559
13.9 virtual析构函数 562
13.10本章小结 563
附录A运算符的优先级与结合律 568
附录B ASCII字符集 570
附录C基本数据类型 571
附录D计数系统 572
附录E因特网和万维网上的C++资源 583
附录F使用Visual Studio.NET调试器 587
附录G使用GNU C++调试器 600
参考文献 615
索引 621