第1章 绪论 1
1.1 面向对象程序设计方法 1
1.1.1 面向过程程序设计 1
1.1.2 面向对象程序设计 1
1.1.3 面向对象程序设计的特征 2
1.2 一个简单的C++程序 3
1.3 C++程序开发平台 4
1.3.1 界面介绍 4
1.3.2 编辑C++源程序 5
1.3.3 编译 6
1.3.4 链接 7
1.3.5 执行程序 8
1.3.6 直接运行程序 10
1.4 知识点小结 10
1.5 习题 11
第2章 C++程序设计基础 12
2.1 字符集与关键字 12
2.1.1 标识符(identifier) 12
2.1.2 关键字(keyword) 12
2.1.3 分隔符 13
2.2 基本数据类型 13
2.2.1 整型 13
2.2.2 字符型 14
2.2.3 浮点型 14
2.2.4 布尔型 14
2.3 常量 15
2.3.1 整型常量 15
2.3.2 浮点型常量 15
2.3.3 字符型常量 15
2.3.4 字符串常量 16
2.4 变量 16
2.4.1 变量的定义 16
2.4.2 变量的初始化 17
2.4.3 符号常量的定义 18
2.4.4 指针变量 19
2.4.5 引用变量 22
2.5 变量的定义与访问 23
2.5.1 按名称访问 23
2.5.2 按地址访问 23
2.5.3 引用方式访问 24
2.6 运算符与表达式 25
2.6.1 赋值运算符 25
2.6.2 算术运算符 25
2.6.3 关系运算符 27
2.6.4 逻辑运算符 28
2.6.5 条件运算符 29
2.6.6 逗号运算符 30
2.6.7 sizeof运算符 30
2.6.8 位运算 31
2.7 类型转换 32
2.8 运算符的优先级 35
2.9 构造数据类型 36
2.9.1 结构体 36
2.9.2 共用体 38
2.9.3 枚举 38
2.10 程序的基本控制结构 39
2.10.1 单分支结构 39
2.10.2 双分支结构 40
2.10.3 多分支结构 41
2.10.4 while循环 46
2.10.5 do-while循环 48
2.10.6 for循环 49
2.10.7 循环的嵌套 53
2.10.8 break和continue 53
2.11 知识点小结 56
2.12 习题 56
第3章 函数 59
3.1 函数的概述 59
3.2 函数的定义和调用 59
3.2.1 函数的定义 59
3.2.2 函数的声明 60
3.2.3 函数的参数 61
3.2.4 函数的返回值 62
3.2.5 函数的调用 64
3.3 函数的参数传递 67
3.3.1 传值调用 67
3.3.2 传地址调用 68
3.4 引用在函数中的应用 69
3.4.1 引用作为函数参数 69
3.4.2 引用作为函数返回值 70
3.5 默认参数的函数 70
3.6 内联函数 72
3.7 重载函数 73
3.8 变量的作用域与存储类别 76
3.8.1 变量的作用域 76
3.8.2 变量的存储类别 79
3.9 作用域限定运算符 82
3.10 知识点小结 83
3.11 习题 84
第4章 类与对象 86
4.1 类与对象的含义 86
4.1.1 对象的含义 86
4.1.2 类的含义 87
4.1.3 对象与类的关系 87
4.2 类的封装 87
4.2.1 封装 87
4.2.2 类成员的访问权限 88
4.2.3 类的定义 88
4.2.4 类的成员函数 89
4.3 对象的创建 91
4.3.1 对象的声明与定义 91
4.3.2 对象的成员访问 91
4.4 构造函数与析构函数 93
4.4.1 构造函数 94
4.4.2 默认构造函数 95
4.4.3 拷贝构造函数 96
4.4.4 析构函数 101
4.5 动态创建对象 103
4.6 this指针 105
4.7 类的组合 106
4.8 多文件结构 108
4.8.1 C++源文件的组织 108
4.8.2 多文件结构中的外部变量和外部函数 110
4.9 知识点小结 112
4.10 习题 114
第5章 静态成员与友元 118
5.1 类的静态成员 118
5.1.1 静态数据成员 118
5.1.2 静态成员函数 120
5.2 友元 123
5.2.1 友元函数 124
5.2.2 友元成员 125
5.2.3 友元类 126
5.3 常对象与常成员 128
5.3.1 常对象 128
5.3.2 常成员函数 129
5.3.3 常数据成员 130
5.4 知识点小结 132
5.5 习题 132
第6章 数组与指针 134
6.1 数组的定义与使用 134
6.1.1 数组的定义 134
6.1.2 数组的存储 135
6.1.3 数组的初始化 137
6.1.4 数组元素的使用 138
6.1.5 指针的运算 141
6.2 字符数组与字符串 144
6.2.1 字符数组的初始化 144
6.2.2 字符数组的输入和输出 145
6.2.3 字符指针与字符串 148
6.2.4 常用的字符串处理函数 150
6.3 对象指针 153
6.4 对象数组 153
6.4.1 对象数组的定义 153
6.4.2 对象数组的初始化 154
6.5 动态创建对象数组 156
6.5.1 动态创建对象数组 156
6.5.2 动态撤销对象数组 156
6.5.3 深拷贝和浅拷贝 158
6.6 数组做函数的参数 161
6.6.1 数组元素做参数 161
6.6.2 数组名做参数 161
6.6.3 指针做参数 162
6.7 知识点小结 165
6.8 习题 166
第7章 派生与继承 167
7.1 派生与继承的概念及意义 167
7.2 派生类的声明方式及其成员的访问控制 171
7.2.1 派生类的声明方式和构成 172
7.2.2 公有继承 173
7.2.3 私有继承 176
7.2.4 保护继承 178
7.2.5 不同继承方式的比较 179
7.3 派生类的构造函数与析构函数 180
7.3.1 简单派生类的构造函数 180
7.3.2 有子对象的派生类的构造函数 184
7.3.3 多层派生时的构造函数 186
7.3.4 派生类的析构函数 187
7.4 多重继承 189
7.4.1 声明多重继承的方式 189
7.4.2 多重继承派生类的构造函数 190
7.4.3 多重继承的二义性问题 192
7.4.4 虚基类 194
7.5 赋值兼容 202
7.6 继承与组合 204
7.7 知识点小结 205
7.8 习题 206
第8章 多态 211
8.1 多态性概念 211
8.2 虚函数 212
8.2.1 虚函数的作用 212
8.2.2 虚析构函数 216
8.3 纯虚函数与抽象类 217
8.4 运算符重载 225
8.4.1 运算符重载函数 225
8.4.2 典型运算符重载 231
8.4.3 类型转换 241
8.5 知识点小结 248
8.6 习题 249
第9章 模板 254
9.1 函数模板 254
9.1.1 函数模板与模板函数 254
9.1.2 类型参数表与函数模板实例化 258
9.1.3 函数模板的特化 260
9.1.4 函数模板的重载 261
9.2 类模板 265
9.2.1 类模板的定义和实例化 265
9.2.2 类模板的特化 274
9.3 类模板静态成员与友元 276
9.3.1 类模板的静态成员 276
9.3.2 类模板的友元 277
9.3.3 函数模板是两个类的友元 280
9.4 派生类模板 281
9.4.1 由普通类派生类模板 281
9.4.2 由类模板派生类模板 283
9.5 知识点小结 284
9.6 习题 285
第10章 输入输出流 288
10.1 I/O流的概念及流类库结构 288
10.1.1 I/O流的概念 288
10.1.2 I/O流类库结构 289
10.2 I/O标准流 290
10.2.1 标准流对象 290
10.2.2 标准输出流 290
10.2.3 标准输入流 295
10.3 插入和提取运算符的重载 297
10.3.1 系统预先对插入和提取运算符的重载 297
10.3.2 用户自定义对插入和提取运算符的重载 298
10.4 文件的输入输出 299
10.4.1 文件及分类 299
10.4.2 文件的打开与关闭 300
10.4.3 文本文件操作 301
10.4.4 二进制文件操作 302
10.5 字符串流操作 303
10.6 知识点小结 305
10.7 习题 305
第11章 命名空间与异常处理 307
11.1 命名空间 307
11.1.1 命名空间的产生背景及作用 307
11.1.2 命名空间的定义和使用 307
11.1.3 标准命名空间std 309
11.2 异常处理概述 310
11.2.1 异常处理产生背景 310
11.2.2 标准C++异常处理的特点 311
11.2.3 异常处理的机制 311
11.3 异常处理的实现 312
11.3.1 语法 312
11.3.2 异常接口说明 314
11.4 异常处理中的构造与析构 314
11.5 异常处理程序举例 316
11.6 知识点小结 319
11.7 习题 319
第12章 C++标准模板库 321
12.1 C++标准模板库简介 321
12.2 C++标准模板库概述 321
12.3 容器 322
12.3.1 序列式容器 322
12.3.2 关联式容器 324
12.3.3 容器配接器 324
12.4 迭代器 325
12.4.1 迭代器概述 325
12.4.2 迭代器分类 326
12.5 算法 326
12.5.1 区间的概念 326
12.5.2 多区间处理 328
12.6 配接器 329
12.7 仿函数 330
12.8 知识点小结 331
12.9 习题 331
参考文献 333