第1章 C++程序设计简述 1
1.1 面向对象方法及面向对象语言 1
1.2 结构化程序设计与面向对象程序设计 1
1.3 C++的特点 4
1.4 第一个C++程序 4
1.5 C++语言的文件扩展名 5
1.6 注释符 5
1.7 名字空间 6
1.8 C++中的new和delete 7
1.9 C++语言的输入输出 8
1.10 bool类型 9
1.11 练习题 10
第2章 类与对象 12
2.1 类与对象解析 12
2.1.1 类的引入 12
2.1.2 类的定义 13
2.1.3 对象的定义 15
2.1.4 成员的说明 18
2.1.5 this指针 19
2.1.6 内联函数与预处理 21
2.2 构造函数与析构函数 23
2.2.1 构造函数 23
2.2.2 析构函数 31
2.3 静态数据成员与静态成员函数 36
2.3.1 静态数据成员 36
2.3.2 静态成员函数 40
2.4 与类和对象相关的const 42
2.4.1 普通符号常量 42
2.4.2 const与指针组合使用 43
2.4.3 类内的常数据成员 44
2.4.4 类内常成员函数(const成员函数) 45
2.4.5 常对象 48
2.5 引用与复制构造函数 50
2.5.1 引用 50
2.5.2 复制构造函数 58
2.5.3 数据成员的初始化 64
2.5.4 初始化列表 65
2.6 动态对象创建 68
2.6.1 对象创建 69
2.6.2 内存消耗问题 72
2.6.3 常见的内存错误及其对策 73
2.7 友元 75
2.7.1 友元函数 76
2.7.2 友元成员函数 80
2.7.3 友元类 81
2.8 练习题 83
第3章 运算符重载和类型重载 87
3.1 运算符重载 87
3.1.1 运算符重载方法 87
3.1.2 参数和返回值 99
3.1.3 输入输出运算符重载 101
3.1.4 运算符重载的设计 105
3.2 类型重载 112
3.3 练习题 115
第4章 继承与派生 117
4.1 单继承和派生 118
4.1.1 派生的声明和访问控制 118
4.1.2 重名成员 130
4.1.3 静态成员的访问 134
4.1.4 基类子对象的提取(赋值兼容) 135
4.2 继承中的构造函数与析构函数 137
4.2.1 继承中的构造函数 138
4.2.2 析构函数 142
4.3 多继承 144
4.3.1 多继承的语法格式 144
4.3.2 多继承带来的二义性问题 147
4.4 组合与继承 153
4.4.1 组合 153
4.4.2 组合和继承的选择 155
4.5 练习题 158
第5章 多态性和虚函数 163
5.1 多态性 163
5.2 虚函数 164
5.2.1 虚函数概述 164
5.2.2 虚析构函数 170
5.3 纯虚函数和抽象类 174
5.3.1 纯虚函数 174
5.3.2 抽象类 175
5.4 练习题 179
第6章 模板 183
6.1 函数模板 183
6.1.1 函数模板定义 184
6.1.2 函数模板实例化 184
6.1.3 重载函数模板 186
6.2 类模板 187
6.2.1 类模板定义 188
6.2.2 类模板实例化 190
6.2.3 类模板中的静态成员 191
6.3 STL 193
6.3.1 STL简介 193
6.3.2 容器 194
6.3.3 迭代器 199
6.3.4 算法 200
6.4 练习题 203
第7章 C++的IO系统 207
7.1 流的概念和流类库 207
7.1.1 流的概念 207
7.1.2 C++流类库 207
7.2 标准的输入输出流 209
7.2.1 标准流类 209
7.2.2 数据输入输出成员函数 210
7.2.3 数据的输出格式控制 213
7.3 文件的输入输出 217
7.3.1 文件的操作 217
7.3.2 文本文件的读写 218
7.3.3 二进制文件的读写 223
7.3.4 文件的随机读写 226
7.4 字符串流 230
7.4.1 字符串流简介 230
7.4.2 字符串输出流的操作 231
7.4.3 字符串输入流的操作 232
7.5 练习题 233
第8章 异常处理 237
8.1 异常处理的概念 237
8.2 异常处理机制 237
8.2.1 抛出异常 238
8.2.2 捕获处理异常 239
8.2.3 栈展开 243
8.2.4 重新抛出 244
8.3 标准异常 247
8.4 练习题 252
第9章 综合案例 255
9.1 数据加密与解密 255
9.2 单件设计模式 259
9.3 九宫格棋盘游戏 261
9.4 工资管理系统 266
附录A C++中的关键字 280
参考文献 284