第一篇 基础编程 3
第1章 C++概述 3
1.1 C++历史背景 3
1.2 C++语言的特点 5
练习题 5
第2章 简单的C++程序 6
2.1 流程框图 6
2.2 简单的顺序结构程序 7
2.3 有分支和循环结构的程序 16
2.3.1 有分支结构的程序 16
2.3.2 有循环结构的程序 20
2.3.3 结构化的程序设计及结构化流程图 24
练习题 26
第3章 数据与运算 28
3.1 引言 28
3.2 字符集与标识符 30
3.3 基本数据类型 31
3.4 常量 34
3.4.1 字面常量 34
3.4.2 符号常量 36
3.5 基本运算及表达式 37
3.5.1 算术运算、比较运算和逻辑运算 38
3.5.2 增量/减量运算、赋值运算和逗号运算 38
3.5.3 字符数据的处理 40
3.6 对表达式的进一步说明 41
3.6.1 整数除和算术溢出 41
3.6.2 比较运算的特殊用法 42
3.6.3 前置与后置的增量和减量 44
3.6.4 类型的转换 45
3.6.5 短路表达式 48
3.7 位运算 50
3.8 数据的输出格式控制 52
练习题 55
第4章 选择结构和循环结构 59
4.1 if语句及其嵌套 59
4.2 条件表达式 62
4.3 switch语句 63
4.4 while语句和do…while语句 65
4.5 for语句 67
4.6 break语句和continue语句 70
4goto语句及语句标号 74
练习题 75
第5章 复合类型数据 78
5.1 数组 78
5.1.1 一维数组 78
5.1.2 多维数组 82
5.1.3 字符数组及字符串处理 86
5.1.4 字符串处理函数 90
5.1.5 常用数组算法 91
5.2 指针 99
5.3 引用 107
5.4 结构与联合 108
5.4.1 结构 108
5.4.2 联合 113
5.5 枚举 115
5.6 用typedef定义类型 117
练习题 119
第一篇综合练习题 123
第二篇 面向过程编程 129
第6章 函数 129
6.1 函数的定义 129
6.2 函数的参数传递 133
6.3 递归函数、重载函数和默认参数函数 137
6.3.1 递归函数 137
6.3.2 重载函数 140
6.3.3 默认参数函数 141
6.4 内联函数 143
练习题 144
第7章 作用域和存储类型 147
7.1 标识符的作用域 147
7.1.1 局部作用域和全局作用域 147
7.1.2 标识符的定义与说明以及混合作用域 150
7.1.3 语句作用域 151
7.1.4 名空间及名空间作用域 153
7.1.5 标识符的重名 156
7.1.6 函数说明的隐藏规则 158
7.2 程序的内存映像 159
7.3 变量的存储类型 163
7.3.1 auto类型和static类型 163
7.3.2 register类型 166
7.3.3 无名变量——函数值 167
7.3.4 多文件程序中的变量和函数 168
练习题 169
第8章 指针的高级用法 171
8.1 指针与函数 171
8.1.1 指针作参数 171
8.1.2 指针传递数组和返回指针 173
8.2 不定参数 175
8.3 各类指针 177
8.3.1 字符指针 177
8.3.2 行指针 177
8.3.3 指针数组与指向指针的指针 180
8.3.4 函数指针 186
8.3.5 void指针 189
8.3.6 const与指针 191
8.3.7 容易混淆的指针使用 194
8.4 跨函数引用 195
8.4.1 引用型参数 195
8.4.2 返回引用 196
8.5 链表和二叉树 198
8.5.1 单链表 198
8.5.2 双向链表 203
8.5.3 二叉树 204
8.6 程序中的指针错误用法 207
练习题 211
第9章 预处理命令 214
9.1 包含命令 215
9.2 宏定义 216
9.2.1 无参宏定义 217
9.2.2 带参宏定义 219
9.3 条件编译命令 221
9.4 程序的编译与连接 225
练习题 226
第二篇综合练习题 228
第三篇 面向对象编程 235
第10章 类与对象 235
10.1 类与对象的定义 236
10.1.1 结构的演变 236
10.1.2 类的定义与使用 237
10.1.3 内联成员函数 240
10.1.4 this指针 240
10.1.5 对象的使用 241
10.2 类的构造与析构 243
10.2.1 构造函数与析构函数 243
10.2.2 复制构造函数 249
10.2.3 临时对象 252
10.2.4 调用函数时数据传递中的对象 253
10.3 动态对象与对象数组 255
10.3.1 对象数组的构造与析构 255
10.3.2 动态对象与动态对象数组 257
10.3.3 对象的生命周期 259
10.4 常成员和对象类成员 261
10.5 内嵌类型 263
练习题 265
第11章 类的静态成员与类的友元 267
11.1 静态成员 267
11.1.1 静态成员变量 267
11.1.2 静态成员函数 269
11.1.3 静态成员变量与全局变量的比较 271
11.2 类的友元 272
11.2.1 友元函数 272
11.2.2 友元类 273
练习题 275
第12章 运算符的重载 277
12.1 类成员的运算符重载 277
12.2 非成员的运算符重载 279
12.3 赋值运算符的重载 281
12.4 转换函数 285
12.5 特殊的运算符重载 287
12.5.1 重载++和-- 287
12.5.2 重载<<和>> 290
12.5.3 重载[]、*(指向)和-> 291
12.5.4 重载()和函数对象 294
12.6 string类的使用 296
练习题 298
第13章 类的继承性 301
13.1 单一派生 302
13.1.1 派生类的定义 302
13.1.2 公有派生、私有派生和保护派生 304
13.1.3 重名的优先级和隐藏 308
13.2 派生类的构造与析构 310
13.3 多重派生 313
13.4 重名的使用规则 315
13.5 派生类的类型兼容 317
13.6 虚基类及复杂类的构造与析构 320
练习题 325
第14章 类的多态性 329
14.1 虚函数 329
14.2 虚函数的使用规则和内部实现原理 334
14.2.1 虚函数的使用规则 334
14.2.2 虚函数的内部实现原理 339
14.3 纯虚函数与抽象类 341
练习题 347
第15章 C++输入/输出系统 351
15.1 C++输入/输出系统的结构 352
15.2 C++流的状态 353
15.3 输入/输出成员函数及插入符《和提取符》 355
15.4 C++流的格式控制 360
15.5 文件流 365
15.5.1 文件的打开与关闭 366
15.5.2 文本文件的使用 368
15.5.3 二进制文件的使用 371
15.6 字符串流 376
练习题 378
第16章 异常 380
16.1 异常机制 380
16.2 异常的使用 381
16.3 异常类 385
练习题 386
第三篇综合练习题 387
第四篇 泛型编程 395
第17章 模板 395
17.1 函数模板 395
17.2 类模板 398
练习题 401
第18章 STL编程简介 402
18.1 STL的简单例子 402
18.2 STL容器与迭代器 403
18.2.1 顺序容器 403
18.2.2 关联容器 406
18.3 STL算法 407
练习题 411
附录A 部分题解及常见错误 412
附录B 计算机基础知识 444
附录C 使用Visual C++编写控制台应用程序 452
附录D C++旧版本和C++标准的常见区别 456
参考文献 458