第1章C++概述 1
1.1 C与C++程序的简单对比 2
1.2 C++的基本数据类型 3
1.2.1关键字 3
1.2.2基本数据类型 4
1.2.3变量 6
1.2.4常量 7
1.2.5运算符 9
1.3 C++的新特征 12
1.3.1区别于C的数据输入和输出 12
1.3.2动态内存的分配 13
3.3引用 16
1.3.4内联函数 18
1.3.5函数重载和默认参数 19
1.4程序的编译、连接和运行 22
1.5上机实训 23
本章习题 23
第2章 类和对象 25
2.1面向对象程序设计概述 26
2.2面向对象的基本特征 27
2.2.1对象和类 27
2.2.2封装与数据隐藏 28
2.2.3继承 28
2.2.4多态性 29
2.2.5消息 29
2.2.6面向过程与面向对象程序设计方法的比较 29
2.3类和对象的定义 30
2.3.1类的定义 30
2.3.2类对象的定义 32
2.3.3类对象的内存分配 34
2.4类的成员函数 34
2.4.1在类内定义成员函数 35
2.4.2在类外定义成员函数 35
2.5对象成员的引用 37
2.6构造函数和析构函数 40
2.6.1构造函数的定义 40
2.6.2构造函数的重载 42
2.6.3默认参数的构造函数 43
2.6.4析构函数 45
2.6.5拷贝构造函数和默认拷贝构造函数 48
2.7类和对象的进一步应用 53
2.7.1堆对象 53
2.7.2对象数组 54
2.7.3类的组合 54
2.7.4面向对象程序中的常量 57
2.7.5 this指针 60
2.8静态成员 61
2.8.1静态数据成员 61
2.8.2静态成员函数 63
2.9友元函数和友元类 67
2.9.1友元函数 67
2.9.2友元类 69
2.10上机实训 71
本章习题 72
第3章 继承与派生 75
3.1继承与派生的概念 76
3.1.1继承与派生的基本概念 76
3.1.2派生类的定义 77
3.1.3派生类的生成 79
3.2类的继承方式 81
3.2.1公有继承 81
3.2.2私有继承 82
3.2.3保护继承 84
3.2.4继承方式的总结和比较 84
3.3派生类的构造函数和析构函数 85
3.3.1简单派生类的构造函数 85
3.3.2析构函数 87
3.3.3复杂派生类的构造函数和析构函数 87
3.4基类与派生类的转换 90
3.5多重继承 91
3.5.1多重继承的定义 91
3.5.2多重继承中的二义性问题 93
3.6虚基类 98
3.6.1虚基类的定义 98
3.6.2虚基类及其派生类构造函数的执行顺序 100
3.6.3虚基类的实际应用 101
3.7上机实训 105
本章习题 107
第4章 多态性和虚函数 109
4.1多态性的概念 110
4.1.1静态联编和动态联编 110
4.1.2虚函数的引入 110
4.1.3虚函数的定义 113
4.1.4动态联编的工作机制 115
4.1.5虚析构函数 116
4.2纯虚函数与抽象类 118
4.2.1纯虚函数 118
4.2.2抽象类 119
4.2.3抽象类的实际应用 122
4.3上机实训 128
本章习题 129
第5章 运算符重载 131
5.1运算符重载的概念 132
5.2运算符重载的实现 134
5.3常用运算符重载 135
5.3.1单目运算符重载 135
5.3.2下标运算符重载 137
5.3.3关系运算符重载 139
5.3.4类型转换运算符重载 140
5.4上机实训 142
本章习题 142
第6章 流与类库 145
6.1流的基本概念 146
6.2基本输入流 147
6.2.1输入/输出流体系 147
6.2.2基本输入流 150
6.3基本输出流 151
6.4文件流 157
6.4.1文件流类与文件流对象 157
6.4.2定义文件流对象 157
6.4.3文件的打开和关闭 158
6.4.4文本文件的输入/输出(读写) 161
6.4.5二进制文件的输入/输出(读写) 164
6.4.6文件的随机访问 166
6.5字符串流 168
6.6文件的输入/输出运算符重载 171
6.7上机实训 173
本章习题 174
第7章 模板 175
7.1函数模板 176
7.1.1函数模板语法 177
7.1.2函数模板实例化 177
7.1.3函数模板的执行 179
7.1.4使用函数模板需要注意的问题 179
7.2类模板 181
7.2.1类模板的语法 181
7.2.2类模板实例化 182
7.2.3派生类和类模板 187
7.2.4使用类模板需要注意的问题 189
7.3上机实训 190
本章习题 190
第8章 异常和断言 193
8.1异常的概念 194
8.1.1异常的概念 194
8.1.2异常的产生 194
8.2异常处理机制 195
8.2.1异常处理机制的组成 195
8.2.2异常的捕获和处理 195
8.2.3异常处理模式 198
8.2.4异常规格说明 199
8.2.5未捕获的异常 200
8.2.6捕获所有类型的异常 201
8.3标准库中的异常类 202
8.4异常处理综合应用示例 203
8.5断言 206
8.5.1断言概述 206
8.5.2断言ASSERT()的使用方式 207
8.6上机实训 208
本章习题 209
第9章STL的应用 211
9.1标准模板库STL的概念 212
9.1.1什么是STL 212
9.1.2 STL和C++标准的关系 212
9.1.3 STL的组成部分 213
9.1.4 STL对C++的影响 214
9.2命名空间 214
9.2.1命名空间的定义 214
9.2.2命名空间的使用 215
9.2.3无名空间 217
9.2.4标准命名空间std 217
9.3容器(Container) 217
9.3.1容器简介 217
9.3.2容器的结构 218
9.3.3容器的使用 224
9.4迭代器(Iterator) 227
9.4.1输入迭代器 228
9.4.2输出迭代器 229
9.4.3前向迭代器 229
9.4.4双向迭代器 230
9.4.5随机存取迭代器 230
9.4.6迭代器的使用 231
9.5算法(Algorithm) 232
9.5.1算法概述 232
9.5.2算法分类介绍 233
9.6上机实训 238
本章习题 238
第10章 类的设计原则及模式 241
10.1类的设计原则 242
10.1.1单一职责原则 242
10.1.2依赖倒置原则 243
10.1.3开放-封闭原则(OCP) 243
10.1.4 Liskov替换原则(LSP) 244
10.1.5接口分离原则(ISP) 245
10.2设计模式 247
10.2.1单例(Singleton)设计模式 247
10.2.2适配器(Adapter)设计模式 249
10.2.3组合(Composition)设计模式 253
10.2.4命令(Command)设计模式 257
10.2.5策略(Strategy)设计模式 262
10.2.6责任链(Chain of Responsibility)设计模式 266
10.2.7修饰(Decorator)设计模式 270
10.3上机实训 274
本章习题 275
第11章 面向对象的开发方法 277
11.1面向对象概述 278
11.1.1对象 278
11.1.2类 278
11.1.3属性和方法 278
11.1.4封装 279
11.1.5继承 279
11.1.6消息 280
11.1.7结构与关联 280
11.1.8多态性 281
11.2面向对象模型 281
11.2.1类对象模型 281
11.2.2动态模型 281
11.2.3功能模型 282
11.3面向对象开发过程 282
11.3.1面向对象分析 282
11.3.2面向对象设计 285
11.3.3面向对象实现 288
11.4上机实训 288
本章习题 289
第12章 面向对象开发实例 291
12.1需求陈述 292
12.2银行ATM模拟系统的分析 292
12.2.1用例模型 293
12.2.2类模型 295
12.2.3动态模型 299
12.3银行ATM模拟系统的设计与实现 300
12.3.1结构设计 300
12.3.2类的设计 301
12.3.3对象设计 309
附录A统一建模语言(UML) 341
附录B常用容器与算法介绍 351
附录C完整的编译运行方法演示 369
附录D课后习题参考答案 379
参考文献 384