第1章 面向对象程序设计与C++ 1
1.1 面向对象程序设计 1
1.1.1 面向对象的基本概念 1
1.1.2 面向对象的基本特征 3
1.1.3 面向对象的程序设计 5
1.1.4 面向对象的软件开发 5
1.2 C++语言程序设计 6
1.2.1 C++语言的产生 6
1.2.2 C++语言的特点 7
1.2.3 C++语言的发展 8
1.2.4 C++语言的应用 8
1.3 C++程序开发过程 9
1.4 C++程序实例 11
1.4.1 简单的C++程序 11
1.4.2 使用名字空间 12
1.4.3 输入/输出简介 13
1.5 本章小结 16
习题1 16
第2章 C++语言基础 20
2.1 C++数据类型 20
2.1.1 C++字符集 21
2.1.2 C++基本数据类型 21
2.1.3 数值 22
2.2 变量与常量 27
2.2.1 标识符与关键字 27
2.2.2 变量的定义与赋初值 27
2.2.3 符号常量 28
2.2.4 常变量 29
2.3 运算符与表达式 30
2.3.1 运算符 30
2.3.2 表达式 40
2.3.3 类型转换 42
2.4 控制结构 45
2.4.1 判断 46
2.4.2 循环 51
2.4.3 转移 56
2.5 函数 58
2.5.1 函数的定义 58
2.5.2 函数原型的声明 60
2.5.3 函数的调用 60
2.5.4 内联函数 67
2.5.5 函数的重载 69
2.5.6 常用的C++系统函数 71
2.6 本章小结 73
习题2 75
第3章 构造数据类型 85
3.1 枚举类型 85
3.1.1 枚举类型的定义 85
3.1.2 枚举类型的使用 86
3.2 数组 88
3.2.1 一维数组的定义与使用 88
3.2.2 二维数组的定义与使用 92
3.2.3 多维数组 96
3.2.4 数组与函数 98
3.2.5 字符数组与字符串 100
3.3 指针 103
3.3.1 指针的定义与使用 103
3.3.2 指针与字符串 107
3.3.3 指针与数组 108
3.3.4 多重指针 110
3.3.5 动态内存分配 112
3.3.6 指针与函数 116
3.3.7 指针常量与常量指针 122
3.4 引用 124
3.4.1 引用的定义 124
3.4.2 引用与函数 125
3.4.3 常引用 127
3.5 结构与联合 128
3.5.1 结构 128
3.5.2 联合 136
3.6 本章小结 139
习题3 140
第4章 C++程序的结构 148
4.1 变量的类型 148
4.1.1 全局变量与局部变量 148
4.1.2 变量的存储类型 149
4.1.3 变量在内存中的存储 152
4.2 标识符的作用域与可见性 155
4.2.1 函数原型作用域 155
4.2.2 块作用域 155
4.2.3 文件作用域 156
4.2.4 可见性 156
4.3 程序的文件结构与编译预处理命令 157
4.3.1 文件包含命令#include 157
4.3.2 不带参数的宏定义 158
4.3.3 带参数的宏定义 160
4.3.4 条件编译 161
4.4 名字空间 164
4.5 本章小结 166
习题4 167
第5章 类与对象 171
5.1 类与对象的概念 171
5.1.1 从面向过程到面向对象 171
5.1.2 类的定义 173
5.1.3 对象的建立与使用 176
5.1.4 成员的存取控制 177
5.2 构造函数与析构函数 178
5.2.1 构造函数 178
5.2.2 析构函数 180
5.2.3 拷贝构造函数 183
5.2.4 浅拷贝与深拷贝 186
5.3 对象的使用 188
5.3.1 对象指针 188
5.3.2 对象引用 190
5.3.3 对象数组 191
5.3.4 动态对象 193
5.3.5 this指针 194
5.3.6 组合对象 195
5.4 静态成员 201
5.4.1 静态数据成员 201
5.4.2 静态成员函数 202
5.5 友元 205
5.5.1 友元函数 205
5.5.2 友元类 207
5.6 常成员与常对象 209
5.6.1 函数实参的保护 210
5.6.2 常对象 210
5.6.3 常数据成员 211
5.6.4 常成员函数 212
5.7 对象的内存分布 213
5.7.1 对象的内存空间的分配 213
5.7.2 对象的内存空间的释放 214
5.8 本章小结 214
习题5 215
第6章 继承与派生 228
6.1 继承与派生的概念 228
6.1.1 继承的概念 228
6.1.2 派生类的实现 229
6.1.3 继承与组合 231
6.2 继承的方式 232
6.2.1 公有继承 232
6.2.2 私有继承 235
6.2.3 保护继承 236
6.3 派生类的构造与析构 240
6.3.1 派生类构造函数的定义 241
6.3.2 单继承的构造与析构 241
6.4 类型兼容 244
6.5 多继承 246
6.5.1 多继承的构造与析构 246
6.5.2 二义性问题 247
6.6 虚基类 249
6.6.1 虚基类的定义 251
6.6.2 虚基类的构造与析构 252
6.7 本章小结 255
习题6 255
第7章 多态性 266
7.1 多态性概述 266
7.2 运算符重载 267
7.2.1 运算符重载机制 267
7.2.2 运算符重载规则 268
7.2.3 重载为类的友元函数 268
7.2.4 重载为类的成员函数 271
7.2.5 典型运算符重载 274
7.3 虚函数 279
7.3.1 静态联编与动态联编 279
7.3.2 虚函数的定义与使用 280
7.3.3 虚析构函数 283
7.4 抽象类 285
7.4.1 纯虚函数 285
7.4.2 抽象类与具体类 286
7.4.3 对象指针数组 288
7.5 本章小结 290
习题7 291
第8章 模板 301
8.1 模板简介 301
8.2 函数模板 301
8.3 类模板 304
8.3.1 类模板的定义 304
8.3.2 类模板的实例化 306
8.3.3 默认模板参数 307
8.4 模板编程 308
8.4.1 栈类模板 308
8.4.2 链表类模板 310
8.5 本章小结 312
习题8 313
第9章 STL编程 317
9.1 STL编程思想 317
9.2 STL容器 318
9.2.1 顺序容器 319
9.2.2 关联容器 328
9.3 STL算法 331
9.4 STL函数对象 334
9.5 本章小结 336
习题9 336
第10章 输入/输出流与文件系统 338
10.1 输入/输出流的概念 338
10.2 输出流 340
10.3 流的格式控制 343
10.3.1 格式控制标志 343
10.3.2 格式操纵符 345
10.3.3 格式控制成员函数 347
10.4 输入流 349
10.5 数据流的错误侦测 354
10.6 文件的输入/输出 357
10.6.1 文件的创建 357
10.6.2 文本文件的输出 358
10.6.3 二进制文件的输出 360
10.6.4 文本文件的输入 362
10.6.5 二进制文件的输入 363
10.6.6 文件指针的使用 364
10.7 本章小结 367
习题10 367
第11章 string类字符串处理 372
11.1 string类对象的定义 372
11.2 string类成员函数 373
11.3 string类的操作符 375
11.4 string类串位置指针 377
11.5 string类串与C风格字符串的转化 379
11.6 本章小结 380
习题11 380
第12章 异常处理 382
12.1 异常的概念 382
12.2 C++异常处理机制 384
12.3 异常处理嵌套与重抛异常 387
12.3.1 异常处理嵌套 387
12.3.2 重抛异常 389
12.4 标准异常处理类 390
12.5 本章小结 392
习题12 392
第13章 C++综合应用实例 394
13.1 系统分析 394
13.2 系统设计 395
13.3 系统实现 397
13.4 本章小结 411
附录A 数值的机内表示 412
A.1 数值的各种进制表示形式 412
A.2 整数的机内表示 414
A.3 小数的机内表示 416
附录B C++语言中的关键字(保留字) 418
附录C 运算符优先级表 419
附录D ASCII码字符集 421
附录E GB 2312—80汉字字符集 423
附录F GBK汉字字符集 425
参考文献 426