第1章 C++概述与软件开发 1
1.1什么是C语言和C++ 3
C和C++历史回顾 3
C/C++是一门编译语言 4
为什么许多程序员都选择C++ 7
1.2什么是面向对象 7
C++程序并不一定是面向对象的 8
一个简单的面向对象程序示例 8
面向对象的软件更有优势 8
1.3结构化设计与面向对象设计 9
ATM——结构化设计 9
采用面向对象方法的ATM——究竟是谁的任务 9
汽车维护——结构化设计 10
采用面向对象方法的汽车维护——究竟是谁的任务 12
1.4软件开发技术概述 13
1.5问题发现与解决 14
复习题 15
第2章 C++的入门知识 17
2.1编程基础 17
算法设计 18
正确的软件开发步骤 19
2.2专业术语及工程创建 20
2.3 C++程序的一般格式 21
“Hello World!”程序 21
“How’s the Weather?”程序 24
2.4程序的数据及数据类型 29
C++的数据类型 30
容器=数据类型,标签=变量名 31
数据类型修饰符 32
问题分析:整型数据究竟有多大 32
2.5 C++中的变量声明 33
C++的命名规则 33
在哪里声明变量 34
2.6 C++中的运算符 34
计算路程的程序 35
从键盘输入程序所需数据 36
赋值运算符 38
运算符的优先级 38
数据类型及其存储的值 39
算术运算符 42
自增运算符和自减运算符 48
复合赋值运算符 48
2.7 #define、const和数据类型转换 49
#define预处理指令 49
const修饰符 50
const比#define好吗 51
数据类型转换 51
2.8关于键盘输入和屏幕输出的更多内容 53
转义序列 53
ios格式标记 54
流的IO控制符 56
2.9开始使用类和对象、C++string类 57
2.10练习 60
复习题 66
第3章 控制语句和循环 72
3.1关系运算符和逻辑运算符 72
3.2 if语句 74
if-else语句 76
问题分析:在if语句中使用大括号 78
if-else if-else语句 78
低效的编程方法 80
if-else程序示例 81
嵌套if-else语句 82
条件运算符“?” 84
3.3 switch语句 85
3.4循环 88
括号的用法 89
无限循环 89
3.5 for循环 89
不要改变循环索引 91
for循环示例 91
3.6 while循环 93
3.7 do while循环 96
3.8跳转语句 97
break语句 98
continue语句 98
3.9问题发现与解决 99
五个常见错误 99
调试程序 102
3.10 C++类与vector类 103
3.11总结 105
3.12练习 107
复习题 122
第4章 函数一:基础 130
4.1 C++中的函数 130
只由一个main函数构成的程序 130
包含多个函数的程序 131
函数是个好东西 133
三个重要的问题 133
4.2函数:基本格式 133
4.3函数的编写要求 135
你想住在C++旅馆中吗 136
函数为先 139
函数声明或函数原型 139
函数定义、函数标题行与 140
函数体 140
函数调用 142
传值调用 142
问题分析:未声明的标识符 145
4.4重载函数 146
4.5具有默认输入参数列表的函数 148
4.6局部变量、全局变量和静态变量 150
局部变量 150
块范围 150
全局变量 151
危险的全局变量 152
问题分析:全局变量y0、y1与cmath 153
静态变量 154
4.7 C++stringstream类 155
4.8总结 157
4.9练习 159
复习题 173
第5章 函数二:变量地址、指针以及引用 179
5.1数据变量和内存 179
sizeof运算符 180
预留内存 180
计算机内存和十六进制 181
5.2取地址运算符& 182
5.3指针 184
5.4函数、指针以及间接运算符 186
解决思路 186
指针和函数 187
有效处理大型数据 189
5.5函数和引用 190
复习:两种机制 192
为什么要强调指针的重要性 194
5.6 queue类 194
5.7总结 197
5.8练习 200
复习题 210
第6章 数组 214
6.1使用单个数据变量 214
6.2数组基础 215
数组的索引值从0开始 216
使用for循环和数组来实现的电话账单程序 216
数组的声明和初始化 218
数组越界==严重的问题 220
vector与数组的比较 222
6.3数组和函数 224
每个数组都有一个指针 224
数组指针 224
向函数传递数组:最开始的引用调用 225
利用数组和函数生成随机数并进行排序 227
6.4 C字符串,也称为字符数组 230
字符数组的初始化 230
null字符 231
C字符串的输入 232
C++中提供的字符数组函数 236
6.5多维数组 238
二维数组的初始化 238
嵌套的for循环和二维数组 239
利用二维数组来实现Bingo游戏 240
6.6多维数组和函数 242
改进的Bingo卡片程序 243
白雪公主:利用二维数组来存储姓名 245
6.7利用数据文件对数组赋值 246
6.8总结 252
6.9练习 253
复习题 264
第7章 类和对象 271
7.1我们所了解的类和对象 271
7.2编写自己的类 272
入门实例:自定义日期类 272
第一个C++类:Date类 274
揭开类的生命之谜 281
set和get函数的作用与VolumeCalc类 288
PICalculator类 291
7.3作为类成员的对象 294
7.4类的析构函数 299
7.5对象数组 301
7.6重载运算符与对象 305
7.7指针、引用和类 310
指针和引用实例 310
处理日期和时间的程序实例 312
7.8总结 314
7.9练习 317
复习题 331
第8章 继承和虚函数 342
8.1为什么继承如此重要 342
IceCreamDialog实例 342
Counter类实例 343
8.2继承基础 345
Counter和DeluxeCounter实例 345
保护成员 347
员工、老板和CEO 350
8.3访问控制符的规范和多继承 354
8.4继承、构造和析构 356
构造函数和析构函数回顾 356
基类和派生类的默认构造函数——没有参数 356
在重载的构造函数中使用参数 356
基类和派生类的析构函数 356
医生也是人 356
关于派生类和基类构造函数的规则 360
8.5多态和虚函数 361
多态——同一个接口,不同的行为 361
什么是虚函数 362
虚函数的作用 364
8.6总结 368
8.7练习 369
复习题 382
附录A 学习使用Visual C++ 2005
Express Edition 388
附录B C++关键字表 398
附录C C++运算符 407
附录D ASCII码 408
附录E 位、字节、内存和十六进制表示 413
附录F 文件输入/输出 417
附录G 部分C++类 428
附录H 多文件程序 432
附录I Microsoft Visual C++ 2005Express Edition的调试器 441
术语表 449