第1篇 C++概述篇 2
第1章 C++基础 2
1.1 C++概述 2
1.1.1 C++语言发展历程 2
1.1.2 C++语言特点 2
1.1.3 C++程序开发基本过程 3
1.2 C++开发环境的搭建 4
1.2.1 Visual C++ 6.0安装 4
1.2.2 Visual C++ 6.0开发环境简介 6
1.3第一个C++程序 6
1.3.1创建源程序 6
1.3.2编译链接 9
1.3.3调试运行 10
1.3.4典型C++程序的执行过程 12
1.3.5使用C++解决问题的流程 12
1.4 C++程序的结构 14
1.4.1注释 14
1.4.2编译预处理和新旧标准 14
1.4.3程序主体 15
1.5小结 15
1.6习题 15
第2篇C++基础语法篇 18
第2章 数据的表示 18
2.1数 18
2.1.1二进制 18
2.1.2八进制 19
2.1.3十六进制 20
2.2数据的描述 21
2.2.1 C++的构词方式——标识符 21
2.2.2特殊的标识符——关键字 22
2.2.3整数类型 23
2.2.4浮点类型 24
2.2.5字符类型 25
2.2.6布尔类型 27
2.3变量 27
2.3.1变量的声明和定义 28
2.3.2不变的变量——常量 28
2.4小结 29
2.5习题 29
第3章 程序的基本单位——语句 33
3.1语句的构成 33
3.1.1表达式语句 33
3.1.2输入/输出语句 33
3.2运算符 35
3.2.1运算符概述 35
3.2.2运算符的分类 35
3.3赋值运算符 36
3.3.1赋值运算符——“=” 36
3.3.2数据类型转换——隐式转换 37
3.3.3显式转换 37
3.4其他常用运算符 39
3.4.1算术运算符 39
3.4.2自增自减运算符 40
3.4.3位运算符 41
3.4.4复合赋值运算符 43
3.4.5逗号运算符 43
3.4.6 sizeof运算符 44
3.4.7逻辑运算符 45
3.4.8运算符的优先级和结合性 45
3.5语句块 48
3.5.1语句块的构成 48
3.5.2作用域——变量的作用范围 48
3.6小结 49
3.7习题 49
第4章 程序控制结构 56
4.1语句块的执行方式——顺序结构 56
4.2条件的表达 56
4.2.1单一条件的表达——关系运算符 56
4.2.2多条件的表达——逻辑运算符 57
4.3选择结构 58
4.3.1最简单的选择——条件运算符 58
4.3.2单分支条件语句——if语句 59
4.3.3双分支条件语句——if…else语句 61
4.3.4多重if…else语句 62
4.3.5情况语句——switch语句 64
4.3.6应用实例 65
4.4循环结构 66
4.4.1 for语句 67
4.4.2 while语句 68
4.4.3 do…while语句 69
4.4.4多重循环 70
4.4.5应用举例 71
4.5意外情况的表达——转向语句 72
4.5.1跳出语句——break语句 72
4.5.2继续语句——continue语句 72
4.5.3转向语句——goto 73
4.6综合实例 74
4.7小结 76
4.8习题 76
第5章 数组 81
5.1数组概述 81
5.2数组的来源 82
5.3一维数组 83
5.3.1一维数组的声明和定义 83
5.3.2一维数组的引用 84
5.4二维数组 86
5.4.1二维数组的声明和定义 86
5.4.2二维数组的初始化 86
5.4.3二维数组的引用 88
5.4.4多维数组在内存中如何排列元素 89
5.5字符串 90
5.5.1字符数组 90
5.5.2字符串的存储形式 91
5.5.3字符数组与字符串的区别 91
5.5.4字符串处理函数 92
5.6综合实例——杨辉三角 94
5.7小结 97
5.8习题 97
第6章 函数 106
6.1函数概述 106
6.1.1函数的基本概念 106
6.1.2函数的分类 107
6.2函数的组成 107
6.2.1函数头 108
6.2.2函数体 108
6.3函数的声明和定义 110
6.3.1函数原型——函数的声明 110
6.3.2函数实现——函数的定义 111
6.4函数参数传递 112
6.4.1函数的形参和实参 112
6.4.2值传递 113
6.5函数的调用 115
6.5.1函数的调用过程 115
6.5.2无参函数的调用 115
6.5.3带参函数的调用 116
6.5.4默认形参值的调用 117
6.5.5嵌套调用 120
6.5.6数组作为函数参数 121
6.6递归函数 123
6.6.1直接递归 124
6.6.2间接递归 125
6.7 main()函数 127
6.7.1不带参数的main()函数 127
6.7.2带参数的main()函数 127
6.8函数的综合应用 128
6.9小结 128
6.10习题 128
第7章 指针与引用 136
7.1指针概述 136
7.1.1指针的基本概念 136
7.1.2定义指针变量 137
7.1.3初始化指针 138
7.2指针的访问 139
7.2.1指针的值 140
7.2.2访问指针数据 140
7.2.3小结指针p 141
7.3指针的算术运算 142
7.3.1指针与整数的加减运算 142
7.3.2指针加减1运算 143
7.3.3指针的相减运算 144
7.4特殊指针 144
7.4.1数组指针 144
7.4.2指向函数的指针——函数指针 145
7.4.3指针数组 146
7.4.4二级指针——指针的指针 147
7.4.5多级指针——二级以上的指针 148
7.5指针的应用 149
7.5.1指向一维数组的指针 149
7.5.2指向二维数组的指针 150
7.5.3指向字符串的指针 152
7.5.4指针作为函数参数 153
7.5.5指针作为函数的返回值——指针函数 155
7.5.6动态内存分配 156
7.6引用 158
7.6.1引用的应用 158
7.6.2引用与指针 159
7.6.3引用作为函数参数 160
7.7小结 161
7.8习题 162
第8章 复合数据类型 169
8.1结构体 169
8.1.1结构体概述 169
8.1.2定义结构体类型 170
8.1.3声明结构体变量 172
8.2结构体的应用 173
8.2.1初始化结构体变量 173
8.2.2引用结构体变量成员 175
8.2.3结构体指针 175
8.2.4 结构体数组 176
8.2.5结构体和数组的比较 178
8.3联合 178
8.3.1定义联合类型 178
8.3.2声明联合变量 179
8.3.3引用联合类型成员 179
8.4枚举 180
8.4.1定义枚举类型 180
8.4.2声明枚举变量 182
8.4.3引用枚举变量成员 182
8.5用户自定义数据类型 183
8.6综合实例 184
8.7小结 187
8.8习题 187
第3篇C++面向对象篇 194
第9章 类和对象 194
9.1类和对象概述 194
9.2类和对象的基础语法 195
9.2.1类的声明 195
9.2.2实例化对象 196
9.3类的属性——数据成员 196
9.3.1类的属性的定义 196
9.3.2类的数据成员的特例——静态数据成员 196
9.4类的方法——成员函数 197
9.4.1类的方法的定义 197
9.4.2静态成员函数 198
9.4.3成员函数的类别(const的另一种用法) 198
9.5特殊的成员函数——构造函数和析构函数 198
9.5.1构造函数的概念 198
9.5.2构造函数的声明和定义 200
9.5.3构造函数的调用 201
9.5.4不带参数的构造函数 202
9.5.5带有默认参数的构造函数 202
9.5.6构造函数的重载 203
9.5.7特殊的构造函数——复制构造函数 205
9.5.8析构函数 207
9.5.9类和函数的联系 208
9.5.10 this指针 209
9.6小结 209
9.7习题 209
第10章 继承与派生 217
10.1继承与派生的基础语法 217
10.1.1继承与派生概述 217
10.1.2声明派生类 218
10.2成员的访问 219
10.2.1类的成员的访问说明符 219
10.2.2类的成员的访问权限 219
10.3继承的访问控制 219
10.3.1私有继承 220
10.3.2公有继承 221
10.3.3保护继承 223
10.3.4特殊方法的继承——派生类的构造函数和析构函数 225
10.4多重继承 227
10.4.1声明多重继承 227
10.4.2二义性问题 227
10.4.3多重继承的构造函数和析构函数 231
10.5虚基类 233
10.5.1声明虚基类 233
10.5.2虚基类的构造函数和初始化 234
10.6友元 235
10.6.1友元的引入 235
10.6.2友元函数 235
10.6.3友元成员 237
10.6.4友元类 239
10.7综合实例 240
10.8小结 244
10.9习题 244
第11章 多态 251
11.1多态概述 251
11.1.1什么是多态 251
11.1.2多态的引入 252
11.1.3联编 253
11.2函数重载 254
11.3虚函数 255
11.3.1定义虚函数 256
11.3.2多级继承和虚函数 258
11.4纯虚函数与抽象类 259
11.4.1纯虚函数 259
11.4.2抽象类 261
11.5综合实例 263
11.6小结 264
11.7习题 264
第12章 运算符重载 269
12.1运算符重载概述 269
12.1.1什么是运算符重载 269
12.1.2运算符重载的特点 270
12.2运算符重载形式 271
12.2.1运算符重载为类的成员函数 272
12.2.2运算符重载为类的友元函数 275
12.2.3运算符成员函数与友元运算符函数的比较 278
12.3特殊运算符重载 278
12.3.1 “++++”和“--”重载 278
12.3.2赋值运算符“=”重载 280
12.3.3下标运算符“[]”重载 281
12.4类类型转换 283
12.5小结 284
12.6习题 284
第13章 类模板 290
13.1什么是类模板 290
13.2定义类模板 292
13.2.1语法 292
13.2.2非类型参数 294
13.2.3模板参数的默认实参 294
13.3生成类模板的实例 295
13.3.1类型参数的模板实例化 295
13.3.2非类型参数的模板实例化 296
13.3.3类模板示例 296
13.4类模板的静态成员 298
13.5类模板的友元 300
13.5.1非模板的友元类和友元函数 301
13.5.2与模板参数不绑定的友元类和友元函数模板 301
13.5.3与模板参数绑定的友元类和友元函数模板 302
13.6类模板的特化 303
13.6.1类模板的全特化 303
13.6.2类模板的偏特化 304
13.6.3类模板的匹配规则 304
13.7小结 305
13.8习题 305
第4篇C++应用技术篇 308
第14章 输入/输出流 308
14.1输入/输出流的引入 308
14.1.1 C语言中的输入/输出缺陷 308
14.1.2输入/输出流简介 309
14.1.3输入/输出流类层次 310
14.2标准输入/输出流 311
14.2.1标准输出流对象 312
14.2.2标准输入流对象 312
14.3输入/输出流成员函数 313
14.3.1 get()函数 313
14.3.2 getline()函数 314
14.3.3 put()函数 315
14.3.4 read()和write()函数 315
14.3.5其他成员函数 316
14.4输入/输出格式控制 317
14.4.1用ios类的成员函数进行格式控制 317
14.4.2使用格式控制符进行格式控制 320
14.5用户自定义数据类型的输入/输出 322
14.5.1重载输出运算符“〈〈” 322
14.5.2重载输入运算符“〉〉” 323
14.6命名空间 325
14.6.1命名空间概述 325
14.6.2定义命名空间 325
14.6.3使用命名空间 326
14.7小结 327
14.8习题 327
第15章 预处理和宏 331
15.1预处理概述 331
15.2宏 331
15.2.1宏展开 332
15.2.2替代常量 332
15.2.3替代运算符 334
15.3带参数的宏 334
15.3.1定义带参数的宏 335
15.3.2注意宏展开的结果 336
15.3.3带参数的宏与函数的比较 338
15.4条件编译 338
15.4.1宏指令 338
15.4.2使用条件编译 340
15.5文件包含和头文件卫士 342
15.5.1包含文件指令 342
15.5.2搜索头文件 343
15.5.3头文件卫士 344
15.6预定义的宏 346
15.7小结 347
15.8习题 347
第16章 标准模板库 349
16.1标准模板库概述 349
16.1.1 C++标准库 349
16.1.2 STL的形成 350
16.1.3 STL的组成 350
16.1.4 STL的引入 351
16.2算法 353
16.3容器 354
16.3.1容器概述 355
16.3.2向量 355
16.3.3列表 356
16.3.4集合 358
16.3.5双端队列 358
16.3.6栈 360
16.3.7映射和多重映射 361
16.4迭代器 361
16.5小结 363
16.6习题 363
第17章 程序调试与异常处理 365
17.1程序错误 365
17.1.1编译错误 365
17.1.2逻辑错误 366
17.1.3运行错误 367
17.1.4程序调试 368
17.2异常处理 369
17.2.1基本思想 369
17.2.2抛出异常 370
17.2.3捕获异常 371
17.2.4自定义异常对象 373
17.3异常处理实例 374
17.4小结 375
17.5习题 375
第18章 文件 378
18.1文件概述 378
18.1.1操作文件的过程 379
18.1.2处理文件流的类 381
18.2文件的打开与关闭 384
18.2.1打开文件 384
18.2.2关闭文件 385
18.3文件的顺序读/写 386
18.3.1读/写文本文件 386
18.3.2读/写二进制文件 387
18.4文件的随机读/写 391
18.5小结 394
18.6习题 394