第1章 C++概述 1
1.1 C++的起源和特点 1
1.1.1 C++的起源 1
1.1.2 C++的特点 1
1.2 C++程序的结构 2
1.2.1 C程序与C++程序比较 2
1.2.2 C++程序结构 3
1.2.3 C++程序的编辑、编译和运行 5
1.3 C++的新特性 6
1.3.1 单行注释和新的I/O流 6
1.3.2 const修饰符 8
1.3.3 内联函数 10
1.3.4 函数原型 12
1.3.5 带缺省参数的函数 14
1.3.6 函数名重载 15
1.3.7 new和delete运算符 16
1.3.8 引用 17
习题 20
第2章 类和对象 22
2.1 类和对象的定义 22
2.1.1 C++对结构的扩展 23
2.1.2 C++中类的定义 23
2.1.3 C++类中的成员函数定义 25
2.1.4 C++中对象的定义和使用 26
2.1.5 C++中类的接口与实现 29
2.1.6 类声明与类定义 31
2.1.7 结构struct与类class的比较 32
2.2 构造函数和析构函数 32
2.2.1 构造函数 32
2.2.2 析构函数 34
2.2.3 重载构造函数 36
2.2.4 组合类和对象成员的初始化 38
2.3.2 常对象 40
2.3.1 常成员函数 40
2.3 类与const 40
习题 41
第3章 面向对象程序设计概述 45
3.1 对象与类 45
3.1.1 对象 45
3.1.2 类 46
3.1.3 对象与类的关系 46
3.2 消息和方法 47
3.2.1 消息 47
3.2.2 方法 48
3.3.1 结构化程序设计方法 49
3.3 面向对象程序设计 49
3.3.2 面向对象程序设计方法 51
3.4 数据抽象 52
3.4.1 抽象 52
3.4.2 数据抽象和抽象数据类型 53
3.5 封装性和信息隐藏 54
3.6 继承性与软件重用 55
3.7 多态性 57
3.8 面向对象的程序设计语言 57
3.8.1 面向对象程序设计语言的发展概况 57
3.8.2 几种典型的面向对象程序设计语言 58
3.9 面向对象的软件工程 59
习题 61
第4章 进一步学习类和对象 62
4.1 对象数组 62
4.1.1 对象数组的定义和使用 62
4.1.2 对象数组的初始化 62
4.2 指向对象的指针 63
4.2.1 对象指针的用法 63
4.2.2 对象指针与对象数组 64
4.3 this指针 65
4.4 对象的赋值 67
4.5.1 传值调用 69
4.5 对象作为函数参数 69
4.5.2 传址调用 70
4.6 从函数返回对象 72
4.7 类的静态成员 73
4.7.1 静态数据成员 73
4.7.2 静态成员函数 76
4.8 类的友元 78
4.8.1 友元函数 79
4.8.2 友元类 80
习题 83
5.1 堆 86
第5章 堆与复制构造函数 86
5.2 new和delete 87
5.2.1 需要new和delete运算符的原因 87
5.2.2 在堆上创建对象 88
5.3 默认的复制构造函数 89
5.4 自定义复制构造函数 90
5.4.1 自定义的复制构造函数 92
5.4.2 复制构造函数与函数参数 93
5.4.3 复制构造函数与初始化 95
5.4.4 在返回对象时使用复制构造函数 97
习题 100
第6章 继承性:派生类 104
6.1 派生类的概念 104
6.2 单继承 106
6.2.1 公有继承 107
6.2.2 私有继承 109
6.2.3 保护继承 110
6.3 派生类的构造函数和析构函数 113
6.4 多重继承 119
6.4.1 多重继承的概念 119
6.4.2 多重继承中的二义性问题 121
6.4.3 虚基类 124
6.5 赋值兼容规则 126
6.6 应用举例 129
习题 131
第7章 运算符重载 135
7.1 运算符重载的目的 135
7.2 运算符重载语法 137
7.3 成员运算符函数 138
7.4 友元运算符函数 141
7.5 成员运算符函数与友元运算符函数比较 143
7.6 “++”和“--”的重载 145
7.7 赋值运算符“=”的重载 148
7.8 下标运算符“[]”与函数调用运算符“()”的重载 152
7.9 构造函数用于类型转换 154
7.10 应用举例 161
习题 166
第8章 多态性和虚函数 168
8.1 多态性概述 168
8.2 静态联编和动态联编 169
8.3 虚函数 170
8.4 纯虚函数和抽象类 176
8.5 应用举例 180
习题 186
第9章 模板 188
9.1 模板的概念 188
9.2 函数模板 188
9.3 重载函数模板 193
9.4 类模板的定义 196
9.5 使用类模板 201
9.6 应用举例 204
习题 216
第10章 类库和C++的标准模板库STL 217
10.1 类库 217
10.1.1 类库的概念 217
10.1.2 分析、利用类库 218
10.1.4 类库是面向对象的软件开发环境的核心 219
10.1.3 类库的特点 219
10.2 C++的标准模板库STL 220
10.2.1 名字空间简介 220
10.2.2 C++标准库的构成 226
10.2.3 标准模板库STL简介 227
10.2.4 标准模板库STL应用举例 228
习题 235
11.1 C++的输入/输出流 236
11.1.1 C++的输入/输出流 236
第11章 输入/输出流 236
11.1.2 C++流类库 237
11.2 重载输入/输出运算符 238
11.2.1 重载输出运算符“〈〈” 239
11.2.2 重载输入运算符“〉〉” 240
11.2.3 综合应用举例 241
11.3 输入/输出格式控制 244
11.3.1 使用ios的成员函数来控制输入/输出数据的格式 244
11.3.2 使用操纵符来控制输入/输出数据的格式 247
11.4 文件的输入/输出操作 250
11.4.1 文件的打开与关闭 251
11.4.2 文本文件的读写 253
11.4.3 二进制文件的读写 254
11.4.4 文件的随机访问 257
习题 259
第12章 异常处理 260
12.1 异常处理的概念 260
12.2 C语言处理异常的方法 262
12.2.1 检查函数的返回值来发现异常错误 262
12.2.2 使用signal()和raise()函数 262
12.2.3 使用非局部的跳转Goto函数 262
12.3.1 C++程序处理异常的一般形式 263
12.3 C++语言的异常处理方法 263
12.3.2 捕获函数内部抛出的异常 264
12.3.3 多个catch语句 264
12.3.4 非正常的程序终止 265
12.3.5 自定义运行终止函数 266
12.3.6 捕获所有的异常 267
12.4 异常类和C++标准异常 269
12.4.1 异常类 269
12.4.2 C++语言中的标准异常 270
12.4.3 C++异常处理机制的好处 273
习题 273
主要参考文献 274