第1部分 C++语言基础知识
第1章 C++语言概述 2
1.1 计算机语言简介 2
1.2 C++语言的发展 4
1.3 数据信息的表示与存储 5
1.3.1 数据的存储单位 5
1.3.2 数值数据的表示 6
1.3.3 数值数据的编码(原码、反码与补码) 7
1.3.4 文本数据的表示(ASCII码) 8
1.4 一个简单的C++程序 9
1.5 C++程序的构成和书写形式 10
1.5.1 C++源程序的结构特点 10
1.5.2 书写程序时应遵循的规则 11
1.6 C++程序的开发过程 11
1.6.1 Visual Studio 2010集成开发环境 12
1.6.2 项目与解决方案 14
第2章 C++编程基础 16
2.1 关键字和标识符 16
2.2 数据类型 17
2.3 常量和变量 19
2.3.1 常量 19
2.3.2 变量 20
2.3.3 符号常量 21
2.4 运算符和表达式 22
2.4.1 算术运算符和算术表达式 23
2.4.2 赋值运算符和赋值表达式 25
2.4.3 关系运算符和关系表达式 26
2.4.4 逻辑运算符和逻辑表达式 27
2.4.5 条件运算符和条件表达式 28
2.4.6 位运算 28
2.4.7 其他运算符 29
2.5 数据类型转换 30
2.5.1 自动类型转换 30
2.5.2 强制类型转换 30
2.6 基本输入/输出 31
2.6.1 标准输入流和标准输出流 31
2.6.2 I/O流的格式控制 32
第3章 C++基本控制结构程序设计 35
3.1 C++语句 35
3.2 顺序结构程序设计 37
3.3 分支结构程序设计 38
3.3.1 if语句 38
3.3.2 switch语句 44
3.3.3 分支结构程序举例 45
3.4 循环结构程序设计 46
3.4.1 while语句 47
3.4.2 do...while语句 48
3.4.3 for语句 50
3.4.4 循环嵌套 52
3.4.5 break和continue语句 54
3.4.6 循环结构程序举例 55
第4章 函数与预处理 58
4.1 概述 58
4.1.1 函数的基本概念 58
4.1.2 C++程序的函数组成 58
4.1.3 函数的分类 59
4.2 函数定义及调用 59
4.2.1 函数的定义 59
4.2.2 函数的调用 60
4.2.3 函数原型声明 62
4.2.4 函数的嵌套调用和递归调用 62
4.3 C++中的特殊函数 65
4.3.1 内联函数 65
4.3.2 重载函数 66
4.3.3 具有默认参数值的函数 66
4.4 函数模板 68
4.5 局部变量和全局变量 69
4.5.1 局部作用域和局部变量 69
4.5.2 全局作用域和全局变量 70
4.6 变量的生存期和存储类别 71
4.6.1 变量的生存期 71
4.6.2 变量的存储类别 72
4.7 内部函数和外部函数 76
4.7.1 内部函数 76
4.7.2 外部函数 76
4.8 编译预处理 77
4.8.1 宏定义 78
4.8.2 文件包含 78
4.8.3 条件编译 79
第5章 数组 81
5.1 概述 81
5.2 数组简介 81
5.2.1 数组声明 81
5.2.2 数组元素的使用 82
5.2.3 数组的存储 82
5.2.4 数组的初始化 83
5.3 数组作为函数参数 86
5.3.1 数组元素作为函数参数 86
5.3.2 数组名作为函数参数 87
5.4 字符数组与字符串 88
5.4.1 字符数组的定义和引用 89
5.4.2 字符数组的初始化 89
5.4.3 字符数组的应用 89
第6章 指针和引用 91
6.1 指针的概念 91
6.1.1 指针和指针变量 92
6.1.2 指针变量的声明和赋值 92
6.1.3 指针的基本运算 93
6.2 指针与数组 94
6.2.1 指针与一维数组 94
6.2.2 指针与二维数组 96
6.2.3 指向字符串的指针变量 98
6.2.4 指针数组和多级指针 99
6.3 指针和函数 99
6.3.1 指针作为函数参数 99
6.3.2 返回指针值的函数 100
6.3.3 指向函数指针 101
6.4 动态存储分配 102
6.4.1 概念 102
6.4.2 new操作符 102
6.4.3 delete操作符 103
6.5 引用 104
6.5.1 引用的定义 104
6.5.2 引用的操作 104
6.5.3 用引用作为函数的参数 105
第7章 自定义数据类型 107
7.1 结构体类型 107
7.1.1 结构体类型的定义 107
7.1.2 结构体类型变量的定义及其初始化 109
7.1.3 结构体类型的使用 109
7.2 枚举类型 111
7.3 联合体类型 112
第2部分 面向对象程序设计
第8章 类与对象 115
8.1 面向对象程序设计的基本特征 115
8.2 类和对象 117
8.2.1 类的定义 118
8.2.2 类成员的访问控制 119
8.2.3 类的成员函数 120
8.2.4 对象的创建与使用 121
8.2.5 this指针 125
8.3 构造函数和析构函数 126
8.3.1 构造函数 127
8.3.2 析构函数 130
8.4 拷贝构造函数 131
8.4.1 拷贝构造函数简介 132
8.4.2 浅拷贝与深拷贝 133
8.5 类的组合 136
8.5.1 组合类的定义 136
8.5.2 组合类的构造函数 137
8.5.3 前向引用声明 138
8.6 类的友元 140
8.6.1 友元函数 140
8.6.2 友元类 142
8.7 类的静态成员 144
8.7.1 静态数据成员 144
8.7.2 静态函数成员 147
第9章 继承与派生 150
9.1 继承和派生的概念 151
9.2 继承的实现 152
9.2.1 派生类的定义 152
9.2.2 派生类的构成 154
9.2.3 继承的访问控制 155
9.2.4 类型兼容规则 160
9.3 派生类的构造函数与析构函数 162
9.3.1 派生类的构造函数 162
9.3.2 派生类的拷贝构造函数 165
9.3.3 派生类的析构函数 165
9.4 多继承 167
9.4.1 多继承中的二义性 167
9.4.2 虚基类 168
9.4.3 虚基类及其派生类构造函数 169
第10章 多态性与虚函数 172
10.1 多态性 172
10.2 虚函数 172
10.2.1 一般虚函数成员 173
10.2.2 虚析构函数 174
10.3 纯虚函数与抽象类 177
10.3.1 纯虚函数 177
10.3.2 抽象类 177
第11章 运算符重载 180
11.1 运算符重载的概念 180
11.2 运算符重载的规则和语法 181
11.2.1 运算符重载的规则 181
11.2.2 运算符重载的语法 181
11.3 赋值运算符重载 187
11.4 输入/输出运算符重载 189
第12章 标准模板库 192
12.1 STL简介 192
12.2 C++基础 193
12.2.1 类 193
12.2.2 函数对象 193
12.2.3 模板 194
12.3 容器 196
12.3.1 向量 196
12.3.2 线性表 198
12.3.3 双向队列 198
12.3.4 关联容器 198
12.4 迭代器 200
12.4.1 输入和输出迭代器 200
12.4.2 前向迭代器 200
12.4.3 双向迭代器 201
12.4.4 任意存取迭代器 202
12.4.5 迭代标签 202
12.5 算法和函数对象 203
12.5.1 如何创建泛型算法 203
12.5.2 STL算法 205
12.6 适配器 207
12.6.1 容器适配器 207
12.6.2 迭代适配器 207
12.6.3 函数适配器 208
12.7 其余的STL部件 208
第13章 输入/输出流 210
13.1 在输入流与输出流中使用控制符 210
13.2 C++输入/输出文件流 212
13.2.1 打开文件 212
13.2.2 关闭文件 213
13.2.3 文本文件 213
13.2.4 状态标志符的验证 214
13.2.5 获得和设置流指针 215
第14章 异常处理 218
14.1 异常处理简介 218
14.2 异常处理方式 218
14.2.1 抛出异常 218
14.2.2 捕获异常 219
14.3 标准异常 221
14.4 自定义异常 222
14.5 异常规格说明 223
附录A C++语言中运算符的优先级和结合性 226
附录B ASCII码字符集 228
参考文献 230