第1章 C++语言基础 1
1.1 数据类型 1
1.1.1 基本数据类型 1
1.1.2 枚举类型 2
1.1.3 结构体 2
1.2 基本语句 3
1.2.1 赋值语句 4
1.2.2 自加减表达式语句 4
1.2.3 分支语句 4
1.2.4 循环语句 5
1.2.5 流程控制语句 7
1.3 变量 8
1.3.1 变量的定义方法 8
1.3.2 const类型限定符 8
1.3.3 函数形式的变量类型转换 9
1.4 函数 9
1.4.1 返回值 10
1.4.2 输入型参数 10
1.4.3 输出型参数 11
1.4.4 系统库函数和用户自定义函数 13
1.4.5 函数原型 13
1.4.6 内联函数 14
1.4.7 带缺省参数的函数 15
1.4.8 函数重载 15
1.5 指针和引用 17
1.5.1 指针变量 17
1.5.2 引用变量 18
1.6 自定义语句 20
1.7 程序预处理 21
1.8 名字空间 22
1.9 new和delete运算符 23
1.10 输入和输出 24
习题1 26
第2章 面向对象程序设计 28
2.1 从面向过程到面向对象 28
2.1.1 设计实例对比 28
2.1.2 从面向过程到面向对象 32
2.2 面向对象技术的基本概念 33
2.2.1 类 33
2.2.2 实例 34
2.2.3 消息 34
2.3 面向对象技术的基本特征 35
2.3.1 抽象性 35
2.3.2 封装性 35
2.3.3 继承性 36
2.3.4 多态性 37
2.4 面向对象的软件开发 38
2.4.1 面向对象分析 38
2.4.2 面向对象设计 42
2.4.3 面向对象实现 43
2.5 面向对象程序设计的优点 43
习题2 45
第3章 类和对象 46
3.1 类 46
3.1.1 类的定义 46
3.1.2 成员变量 49
3.1.3 构造函数和类的实例化 50
3.1.4 成员函数和对象的消息 52
3.1.5 析构函数 55
3.1.6 const修饰符 57
3.1.7 成员函数重载 59
3.2 对象 64
3.3 对象成员变量 68
3.3.1 整体一部分对象模式和子对象 68
3.3.2 子对象和构造函数设计 70
3.3.3 构造函数和析构函数自动调用过程 73
3.4 内部类 75
3.5 static成员 77
3.6 自引用对象指针this 79
3.7 抽象过程与类 82
3.8 设计举例——银行贷记卡系统 82
习题3 87
第4章 友元和运算符重载 89
4.1 友元的概念 89
4.2 定义友元的方法 90
4.3 运算符重载 93
4.3.1 运算符重载的定义和规定 93
4.3.2 运算符重载为类的成员函数 94
4.3.3 运算符重载为类的友元函数 97
4.3.4 两种运算符重载方法的比较 100
4.4 设计举例 101
4.4.1 数组类设计 101
4.4.2 字符串类设计 105
习题4 110
第5章 继承 112
5.1 面向对象的重要特征:继承性 112
5.2 继承 113
5.2.1 基类、派生类和保护成员 113
5.2.2 派生类的定义 113
5.2.3 派生类的三种继承方式 114
5.2.4 派生类的基类子对象 118
5.2.5 派生类的析构函数 119
5.2.6 派生类与基类的关系 120
5.3 赋值兼容规则 121
5.4 派生类对基类成员函数的覆盖 123
5.5 多重继承 125
5.5.1 多重继承的意义 126
5.5.2 多重继承的设计方法 126
5.5.3 多重继承的二义性问题 126
5.5.4 虚基类 131
5.6.1 图书馆信息——公有继承举例 133
5.6 设计举例 133
5.6.2 链式堆栈——私有继承举例 140
习题5 146
第6章 运行时的多态性和抽象类 149
6.1 面向对象的重要特征:多态性 149
6.2 运行时的多态性 150
6.2.1 虚函数和运行时的多态性 150
6.2.2 滞后联编 152
6.2.3 虚函数和派生类对基类成员函数覆盖的区别 153
6.2.4 虚析构函数 155
6.3 抽象类 157
6.4 设计举例 159
习题6 167
第7章 模板 168
7.1 参数多态性和模板 168
7.1.1 参数多态性 168
7.1.2 模板 171
7.2 类模板 172
7.3 函数模板 175
习题7 176
8.1.1 异常的基本类型 177
8.1 异常和异常处理 177
第8章 异常处理 177
8.1.2 传统的异常处理方法以及问题 178
8.2 C++的异常处理方法 179
8.2.1 基本的异常处理方法 180
8.2.2 多个异常的处理方法 182
8.3 异常类的设计 186
8.4 异常抛出和处理的两种方式 189
习题8 191
第9章 I/O流类库 193
9.1 基本概念 193
9.2 C++的基本流类结构 194
9.3 istream类和ostream类 195
9.4.1 格式控制成员函数 197
9.4 格式控制 197
9.4.2 操作符 200
9.5 文件的读/写 202
9.5.1 文件的打开和关闭 203
9.5.2 文本文件的读/写 205
9.5.3 二进制文件的读/写 208
9.5.4 随机访问文件 209
9.6 可流类 211
习题9 213
10.1 STL 215
第10章 标准模板库 215
10.2 容器类 219
10.2.1 容器的基本概念 219
10.2.2 基本容器类 220
10.3 迭代器 228
10.3.1 基本的迭代器 228
10.3.2 迭代器和输入、输出 230
10.3.3 迭代器的分类 233
10.4 算法库 233
习题10 239
附录1.1.1 Visual C++用户界面 241
附录1 Visual C++集成开发环境 241
附录1.1 Visual C++集成开发环境的组成 241
附录1.1.2 菜单栏 242
附录1.1.3 工具栏 246
附录1.2 编辑、编译和运行C++程序 248
附录1.2.1 建立、编译和运行一个简单C++程序的过程 248
附录1.2.2 一个项目包含头文件和C++程序 249
附录1.2.3 一个工作区包含多个项目 252
附录2 Visual C++下的程序调试 254
附录2.1 发现并处理错误 254
附录2.2 调试窗口 255
附录2.3 调试程序 257
附录3 Visual C++下的Windows编程 261
附录3.1 MFC和应用程序框架 261
附录3.1.1 MFC 261
附录3.1.2 应用程序框架 262
附录3.1.3 开发工具 263
附录3.2 用户界面程序设计 265
附录3.2.1 一个用户界面程序设计实例 265
附录3.2.2 AppWizard创建文件的说明 270
附录3.3 标识符命名方法 271
参考文献 273