第1章 面向对象程序设计与C++ 1
1.1 面向对象程序设计简介 1
1.1.1 从面向过程到面向对象 1
1.1.2 面向对象程序设计基本概念 2
1.1.3 几种典型的面向对象程序设计语言 6
1.2 C++语言 7
1.2.1 C++语言的演变过程 7
1.2.2 C++语言的特点 8
1.2.3 C++编程工具 8
1.3 一个简单的C++程序 12
1.4 C++在非面向对象方面的扩展 13
1.4.1 C++的输入/输出功能 13
1.4.2 内联函数 14
1.4.3 函数原型与函数重载 15
1.4.4 名称空间与作用域运算符 17
1.4.5 引用 20
1.4.6 运算符new和delete 22
1.4.7 灵活的局部变量说明 25
1.4.8 const修饰符 26
1.4.9 注释行 27
本章小结 28
练习 28
第2章 类与对象 32
2.1 简单的类及对象 32
2.2 类定义注意事项 33
2.3 类成员函数定义的具体实现 34
2.4 类构造函数和析构函数的特点 35
2.5 拷贝构造函数与深拷贝 39
2.6 CONST成员函数 42
2.7 THIS指针 43
2.8 类的STATIC属性与STATIC方法 44
2.9 赋值运算符重载 47
2.10 友元 48
2.11 C++结构 50
2.12 类的包含与聚合 51
2.13 对象存储持续性 56
2.14 类的其他应用 58
2.15 对象内存模型 64
2.16 类封装实例 65
本章小结 68
练习 68
第3章 继承 76
3.1 继承的思想 76
3.2 派生类和基类之间的特殊关系 77
3.2.1 is_a关系 77
3.2.2 C++继承的语法规则 78
3.2.3 派生类构造函数 78
3.2.4 派生类析构函数 78
3.2.5 访问基类private成员 78
3.2.6 继承的例子 79
3.2.7 错误继承的例子 80
3.3 C++中三种继承方式及派生类中访问控制规则 81
3.4 派生类对象内存模型分析 82
3.5 派生类对象的构造过程和析构过程 82
3.6 跨类的同名成员 85
3.7 基类对象与派生类对象之间的赋值兼容性问题与类型转换 86
3.8 多继承 90
3.8.1 非虚拟基类多继承 90
3.8.2 非虚拟基类多继承派生类的构造函数和析构函数 91
3.8.3 如何访问多个来自同一个共同基类的不同子对象 94
3.8.4 虚拟基类多继承 94
3.8.5 虚拟基类多继承派生类的构造函数和析构函数 95
3.9 继承综合应用实例 97
练习 101
第4章 多态性 107
4.1 重载和隐藏 107
4.2 多态性 108
4.3 多态性实现 111
4.4 VIRTUAL析构函数 114
4.5 纯虚函数和抽象类 116
4.6 抽象类的接口功能 118
4.7 支持虚拟机制类对象的内存模型 121
4.8 微软MFC简介(选读) 121
4.8.1 MFC介绍 122
4.8.2 CObject根类 122
4.8.3 MFC中重要的类 124
本章小结 125
练习 125
第5章 模板技术 131
5.1 函数模板 131
5.2 使用函数模板 133
5.2.1 函数模板的特点 133
5.2.2 函数模板类型化参数与函数模板非类型化参数 133
5.2.3 函数模板重载 134
5.2.4 函数模板特化 136
5.2.5 函数模板实例化 138
5.2.6 编译器选择函数版本策略 138
5.3 类模板与模板实例化 139
5.4 使用类模板 140
5.4.1 类模板完全特化 140
5.4.2 部分特化类模板与非类型化参数 142
5.4.3 类模板显式实例化 145
5.4.4 将模板作为参数 146
5.4.5 编译器选择类的策略 149
本章小结 149
练习 150
第6章 运算符重载 154
6.1 运算符重载基本概念 154
6.2 重载为全局运算符或类成员运算符或类友元函数 155
6.3 运算符重载注意事项 157
6.4 运算符重载举例 160
本章小结 167
练习 167
第7章 标准模板库 171
7.1 嵌套类 171
7.2 STL 172
7.3 通用编程技术 173
7.3.1 迭代器 173
7.3.2 迭代器类型 177
7.3.3 适配器 177
7.3.4 容器概念 177
7.3.5 容器类型 178
7.3.6 函数对象 185
7.3.7 算法 187
7.3.8 存储分配器 188
7.3.9 空容器和string类 188
本章小结 192
练习 192
第8章 异常与RTTI 196
8.1 传统异常处理的方法 196
8.1.1 传统异常处理 196
8.1.2 传统异常处理方式的缺点 197
8.2 C++异常处理 198
8.2.1 C++异常的原则 198
8.2.2 C++异常处理 198
8.2.3 C++异常的类型匹配规则 202
8.2.4 C++异常处理如何解决堆栈解退 202
8.2.5 C++标准异常 207
8.3 RTTI 208
8.3.1 什么是RTTI 208
8.3.2 RTTI对C++异常机制的支持 211
8.3.3 支持RTTI的类的对象内存模型 211
本章小结 214
练习 214
第9章 C++ I/O操作 218
9.1 C++ I/O系统概念 218
9.1.1 从C I/O到C++ I/O 218
9.1.2 关于流 218
9.1.3 数据格式与转换 219
9.2 C++ I/O系统 220
9.2.1 C++ I/O流类库结构 220
9.2.2 预定义的流对象与重载>>、<<运算符 221
9.2.3 针对无格式的成员函数 224
9.2.4 C++ I/O格式控制(函数与操作符) 229
9.3 文件I/O操作 237
9.3.1 文件概述 237
9.3.2 文件的打开和关闭 237
9.3.3 文件读/写 241
9.3.4 随机存取 246
9.3.5 内存格式化 248
本章小结 249
练习 249
附录A C++关键字 253
附录B UML图 254
B.1 UML简介 254
B.2 UML图简介 254
B.3 常见免费UML建模工具 256
参考文献 258