第1章 基本数据与表达式 1
1.1 概述 1
1.1.1 程序设计与程序设计语言 1
1.1.2 一个简单的C+++程序 2
1.1.3 程序的编译执行 4
1.2 C++语言的字符集与词汇 5
1.2.1 字符集 6
1.2.2 词汇 6
1.3 C++语言的基本数据类型与存储形式 7
1.3.1 C+++语言的数据类型 7
1.3.2 数据存储 7
1.3.3 基本数据类型 8
1.4 数据对象与访问 11
1.4.1 变量定义 11
1.4.2 访问变量 12
1.4.3 常量和约束访问 17
1.5 表达式 19
1.5.1 运算符 19
1.5.2 算术表达式 21
1.5.3 逻辑表达式 23
1.5.4 赋值表达式 25
1.5.5 条件表达式 26
1.5.6 逗号表达式 26
1.6 数据输入和输出 27
1.6.1 键盘输入 27
1.6.2 屏幕输出 27
1.6.3 表达式语句 29
本章小结 29
练习题 30
第2章 程序控制结构 36
2.1 选择控制 36
2.1.1 if语句 36
2.1.2 switch语句 41
2.2 循环控制 45
2.2.1 while语句 45
2.2.2 do-while语句 48
2.2.3 for语句 52
2.2.4 循环的嵌套 56
2.3 判断表达式的使用 59
2.4 转向语句 60
本章小结 63
练习题 63
第3章 函数 70
3.1 函数的定义与调用 70
3.1.1 函数定义 70
3.1.2 函数调用 71
3.1.3 函数原型 71
3.2 函数参数的传递 73
3.2.1 传值参数 73
3.2.2 指针参数 77
3.2.3 引用参数 79
3.2.4 函数的返回类型 81
3.3 函数调用机制 84
3.3.1 嵌套调用 84
3.3.2 递归调用 85
3.4 函数地址和函数指针 90
3.4.1 函数的地址 90
3.4.2 函数指针 91
3.5 内联函数和重载函数 95
3.5.1 内联函数 95
3.5.2 重载函数 96
3.6 变量存储特性与标识符作用域 97
3.6.1 存储特性 97
3.6.2 标识符的作用域与可见性 98
3.7 多文件程序结构 101
3.7.1 多文件结构 101
3.7.2 预处理指令 102
3.7.3 多文件程序使用全局变量 106
3.8 命名空间 107
3.8.1 标准名空间 107
3.8.2 定义命名空间 108
3.8.3 使用命名空间 110
3.9 终止程序执行 111
本章小结 113
练习题 114
第4章 数组 124
4.1 一维数组 124
4.1.1 一维数组定义与初始化 124
4.1.2 一维数组访问 126
4.2 指针数组 129
4.2.1 指向基本数据类型的指针数组 129
4.2.2 指向数组的指针数组 129
4.2.3 指向函数的指针数组 130
4.3 二维数组 131
4.3.1 二维数组的定义与初始化 132
4.3.2 二维数组访问 133
4.4 数组作为函数参数 136
4.4.1 向函数传送数组元素 136
4.4.2 数组名作为函数参数 137
4.4.3 应用举例 139
4.5 动态存储 143
4.5.1 new和delete操作符 143
4.5.2 动态存储的应用 143
4.6 字符数组与字符串 146
4.6.1 字符串存储 146
4.6.2 字符串的访问 148
4.6.3 字符串处理函数 150
4.7 string类 154
本章小结 158
练习题 159
第5章 集合与结构 169
5.1 位运算 169
5.2 集合 175
5.2.1 集合的基本运算 175
5.2.2 集合运算的实现 175
5.3 结构 181
5.3.1 定义结构 181
5.3.2 访问结构 183
5.3.3 结构参数 185
5.4 结构数组 187
5.5 链表 190
本章小结 199
练习题 199
第6章 类与对象 206
6.1 类和对象的定义与访问 206
6.1.1 定义类和对象 207
6.1.2 访问对象成员 209
6.1.3 this指针 210
6.2 构造函数和析构函数 210
6.2.1 简单构造函数和析构函数 211
6.2.2 带参数的构造函数 212
6.2.3 重载构造函数 214
6.2.4 复制构造函数 214
6.3 类的其他成员 220
6.3.1 常成员 220
6.3.2 静态成员 223
6.3.3 友元 227
6.4 类的包含 229
本章小结 233
练习题 233
第7章 运算符重载 243
7.1 运算符重载规则 243
7.1.1 重载运算符的限制 243
7.1.2 重载运算符的语法形式 243
7.2 用成员或友元函数重载运算符 245
7.2.1 用成员函数重载运算符 246
7.2.2 用友元函数重载运算符 248
7.3 几个典型运算符的重载 250
7.3.1 重载+++与-- 250
7.3.2 重载赋值运算符 252
7.3.3 重载运算符[]和() 253
7.3.4 重载流插入和流提取运算符 255
7.4 类类型转换 263
7.4.1 构造函数进行类类型转换 263
7.4.2 类型转换函数 264
本章小结 268
练习题 268
第8章 继承 277
8.1 类之间的关系 277
8.2 基类和派生类 278
8.2.1 访问控制 279
8.2.2 重名成员 285
8.2.3 派生类中访问静态成员 288
8.3 基类的初始化 289
8.4 继承的应用实例 291
8.5 多继承 296
8.5.1 多继承的派生类构造和访问 297
8.5.2 虚继承 300
本章小结 304
练习题 305
第9章 虚函数与多态性 314
9.1 静态联编 314
9.2 类指针的关系 315
9.2.1 用基类指针引用派生类对象 315
9.2.2 用派生类指针引用基类对象 316
9.3 虚函数和动态联编 319
9.3.1 虚函数和基类指针 319
9.3.2 虚函数的重载特性 322
9.3.3 虚析构函数 323
9.4 纯虚函数和抽象类 325
9.4.1 纯虚函数 325
9.4.2 抽象类 327
9.5 虚函数和多态性的应用 329
9.5.1 一个实例 329
9.5.2 异质链表 334
本章小结 337
练习题 337
第10章 模板 341
10.1 什么是模板 341
10.2 函数模板 341
10.2.1 模板说明 342
10.2.2 函数模板与模板函数 342
10.2.3 重载函数模板 344
10.3 类模板 346
10.3.1 类模板与模板类 346
10.3.2 类模板作为函数参数 348
10.3.3 在类层次中的类模板 349
10.3.4 类模板与友元 352
10.3.5 类模板与静态成员 354
10.4 标准模板 355
10.4.1 容器 355
10.4.2 迭代器 360
10.4.3 算法 362
本章小结 365
练习题 366
第11章 输入流/输出流 370
11.1 流类和流对象 370
11.1.1 流类库 370
11.1.2 头文件 371
11.2 标准流和流操作 372
11.2.1 标准流 372
11.2.2 输入流操作 373
11.2.3 输出流操作 374
11.2.4 流错误状态 375
11.3 格式控制 377
11.3.1 设置标志字 377
11.3.2 格式控制符 380
11.4 串流 382
11.5 文件处理 384
11.5.1 文件和流 384
11.5.2 打开和关闭文件 385
11.5.3 文本文件 387
11.5.4 二进制数据文件 391
本章小结 402
练习题 403
第12章 异常处理 409
12.1 C++的异常处理机制 409
12.2 异常处理的实现 410
12.2.1 异常处理程序 410
12.2.2 带异常说明的函数原型 413
12.2.3 再抛出异常传递 414
12.2.4 创建对象的异常处理 415
本章小结 416
练习题 416
附录A控制台程序设计 418
A.1 Visual Studio 2010集成开发环境 418
A.1.1 主窗口 418
A.1.2 菜单栏 419
A.1.3 工具栏 420
A.1.4 项目、解决方案和项目工作区 420
A.1.5 Visual C+++ 2010帮助系统的使用 422
A.2 建立控制台应用程序 422
A.2.1 创建简单应用程序 422
A.2.2 程序调试 427
A.2.3 建立多文件应用程序 431
A.2.4 命令行方式执行程序 434
实践题 437
附录B常用库函数 440
附录C C++关键字表 452
附录D ASCII码字符集 453