第1章 程序与数据 1
1.1程序设计概述 1
1.1.1计算机程序设计语言 2
1.1.2 C++语言 3
1.2数据的存储与表示 4
1.2.1数据的存储 4
1.2.2基本数据类型 7
1.2.3类与对象 11
1.2.4其他自定义类型 12
1.2.5数据的输入与输出 15
1.3复习思考 17
1.4实验指导 18
1.5自测练习 20
第2章 运算的模拟 21
2.1运算符与表达式 21
2.1.1算术运算 21
2.1.2赋值运算 23
2.1.3自增/自减运算 25
2.1.4逗号运算 26
2.1.5关系运算 26
2.1.6逻辑运算 26
2.1.7条件运算 28
2.1.8 sizeof运算 29
2.1.9位运算 30
2.2运算优先级与类型转换 32
2.2.1优先级 32
2.2.2类型转换 34
2.3运算符重载简介 37
2.4复习思考 37
2.5实验指导 38
2.6自测练习 44
第3章 流程控制 45
3.1判断与选择 45
3.1.1基本的选择结构 46
3.1.2多重选择 47
3.2重复执行 49
3.2.1 while语句 50
3.2.2 do-while语句 51
3.2.3 for语句 52
3.2.4选择结构与循环结构的嵌套 54
3.3其他控制语句 56
3.3.1 break与continue 56
3.3.2 switch语句 58
3.3.3 goto语句 59
3.4复习思考 60
3.5实验指导 61
3.6自测练习 64
第4章 类与对象 68
4.1对现实事物的模拟 68
4.2类的设计 69
4.2.1类的定义格式 69
4.2.2数据成员 70
4.2.3函数成员 70
4.2.4成员的访问控制 82
4.3对象 82
4.3.1对象的定义与使用 83
4.3.2对象的构造 83
4.3.3对象析构 90
4.4复习思考 92
4.5实验指导 92
4.6自测练习 95
第5章 共享与数据保护 99
5.1类的静态成员 99
5.1.1静态数据成员 99
5.1.2静态函数成员 101
5.2友元类 104
5.3共享数据的保护 107
5.3.1常引用 107
5.3.2常对象 108
5.3.3常成员 109
5.4复习思考 112
5.5实验指导 112
5.6自测练习 115
第6章 全局函数 117
6.1全局函数的定义 117
6.1.1函数定义的语法 117
6.1.2全局函数调用及调用对定义的要求 118
6.1.3内联函数 119
6.1.4带默认形参值的函数 121
6.1.5全局函数重载 122
6.2全局函数的调用 125
6.2.1函数调用的执行机制 125
6.2.2函数调用举例 125
6.3标识符的作用域与对象的生存期 129
6.3.1作用域与可见性 129
6.3.2静态与动态生存期 132
6.4类的友元函数 135
6.4.1全局友元函数 135
6.4.2类的成员函数作为友元函数 137
6.5函数的嵌套与递归调用 137
6.5.1嵌套调用 137
6.5.2递归调用 140
6.6使用C++系统函数 141
6.7复习思考 142
6.8实验指导 142
6.9自测练习 144
第7章 数组与字符串 146
7.1数组 146
7.1.1一维数组 146
7.1.2多维数组 152
7.1.3数组作为函数参数 155
7.2字符串 158
7.2.1用字符数组存储和处理字符串 158
7.2.2 string类 160
7.3复习思考 163
7.4实验指导 164
7.5自测练习 165
第8章 指针 166
8.1指针的定义与使用 166
8.1.1内存空间的访问方式 166
8.1.2指针变量的声明 167
8.1.3与地址相关的运算——“*”和“&” 168
8.2指针运算 170
8.2.1指针的赋值 170
8.2.2指针的算术运算 175
8.2.3指针的比较 177
8.3指针与数组 177
8.3.1用指针处理数组元素 177
8.3.2指针数组 179
8.4指针与函数 181
8.4.1用指针作为函数参数 181
8.4.2指针型函数 183
8.4.3指向函数的指针 184
8.5对象指针 185
8.6复习思考 190
8.7实验指导 190
8.8自测练习 191
第9章 动态内存分配 193
9.1动态内存分配与释放 193
9.1.1 new运算和delete运算 193
9.1.2动态内存分配与释放函数 200
9.2浅拷贝与深拷贝 201
9.2.1浅拷贝 201
9.2.2深拷贝 203
9.3复习思考 204
9.4实验指导 205
9.5自测练习 207
第10章 类的重用 208
10.1类的组合 208
10.1.1对象成员的初始化 208
10.1.2向前引用声明 211
10.2继承与派生 213
10.2.1派生类成员访问控制 215
10.2.2派生类的构造和析构函数 220
10.2.3向上转型 224
10.3虚继承 226
10.3.1同名隐藏 226
10.3.2虚基类 230
10.4复习思考 232
10.5实验指导 232
10.6自测练习 235
第11章 多态性 237
11.1多态性概述 237
11.2虚函数 237
11.2.1一般虚函数成员 237
11.2.2虚析构函数 240
11.3抽象类 241
11.3.1纯虚函数 242
11.3.2抽象类 242
11.4复习与思考 243
11.5实验指导 243
11.6自测练习 246
第12章 流类库与输入/输出 250
12.1 I/O流的概念及流类库结构 250
12.2输出流 253
12.3输入流 265
12.4输入/输出流 272
12.5复习思考 272
12.6实验指导 272
12.7自测练习 275
第13章 运算符重载 276
13.1运算符重载的规则 276
13.2运算符重载为成员函数 278
13.3运算符重载为非成员函数 280
13.4典型运算符重载示例 281
13.4.1算术运算符的重载 281
13.4.2赋值运算符的重载 283
13.4.3自增/自减运算符的重载 285
13.4.4逻辑运算符的重载 288
13.5其他操作符的重载 291
13.5.1流输入输出操作符的重载 291
13.5.2下标操作符的重载 292
13.6复习思考 293
13.7实验指导 294
13.8自测练习 296
第14章 模板 298
14.1函数模板 298
14.1.1函数模板的概念、定义与应用 298
14.1.2函数模板的实例化 300
14.1.3模板实参的省略 302
14.2类模板 304
14.2.1类模板的概念、定义与应用 304
14.2.2模板类的派生与继承 307
14.3复习思考 308
14.4实验指导 308
14.5自测练习 311
第15章 异常处理 313
15.1异常处理的基本思想 313
15.2 C++异常处理的实现 314
15.2.1异常处理的语法 314
15.2.2声明异常接口 317
15.3异常处理中的构造与析构 317
15.4标准程序库异常处理 320
15.5复习思考 321
15.6实验指导 322
15.7自测练习 324
附录 自测练习题参考答案 327