第1章 程序设计概述 1
1.1程序设计基础 1
1.1.1程序 1
1.1.2程序设计语言 1
1.1.3程序设计 2
1.2 C+++语言的发展历史与特点 4
1.2.1 C+++语言的历史 4
1.2.2 C+++语言的特点 5
1.3初识C+++ 6
1.3.1基本术语 6
1.3.2 C+++程序的开发过程 6
1.3.3第一个C+++程序 7
1.3.4华氏温度转换为摄氏温度的程序 9
1.3.5两个整数的加法程序 10
1.3.6计算两点之间距离的程序 11
1.3.7计算圆面积的程序 11
小结 13
习题 14
实验 15
第2章 C+++基础 18
2.1标识符 18
2.1.1 C+++程序中的基本记号 18
2.1.2标识符 18
2.1.3关键字 19
2.2数据类型 20
2.2.1数据类型的基本概念 20
2.2.2变量和常量 20
2.2.3整数类型 21
2.2.4浮点数类型 22
2.2.5字符类型 23
2.2.6布尔类型 24
2.2.7枚举类型 24
2.2.8类型定义 25
2.3用运算符对数据进行运算 26
2.3.1用表达式表达运算意图 26
2.3.2算术运算符和算术表达式 28
2.3.3赋值运算符和赋值表达式 29
2.3.4关系运算符和关系表达式 31
2.3.5逻辑运算符和逻辑表达式 31
2.3.6条件运算符和条件表达式 33
2.3.7位运算符 34
2.3.8长度运算符 36
2.3.9类型转换 36
2.4将语句编织成程序 38
2.4.1什么是语句 38
2.4.2简单语句 38
2.4.3单入口单出口的控制结构 39
2.4.4分支结构 40
2.4.5循环结构 49
2.5使用输入输出标准库 60
2.6指针 64
2.6.1什么是指针 64
2.6.2声明指针变量 65
2.6.3取地址运算符和解引用运算符 66
2.6.4指向指针的指针 68
2.6.5指针赋值 69
2.6.6通用指针 71
2.6.7使用Const修饰指针 72
2.7引用 74
2.8程序设计错误 75
2.8.1语法错误 75
2.8.2运行时错误 76
2.8.3逻辑错误 76
2.8.4测试和调试 77
2.9程序设计风格 77
2.9.1适当的注释 77
2.9.2命名习惯 78
2.9.3程序编排 79
2.10实例学习 80
小结 84
习题 87
实验 91
第3章 函数 100
3.1用函数封装程序功能 100
3.1.1函数定义 100
3.1.2函数调用 102
3.1.3函数声明 107
3.2内联函数 109
3.3函数默认参数 110
3.4函数重载 112
3.5函数模板 113
3.6递归函数 115
3.7指针和函数 121
3.7.1指针作为函数参数 121
3.7.2指针作为函数返回值 125
3.7.3指向函数的指针 126
3.8引用和函数 129
3.9 Lambda表达式 131
3.10异常处理 134
3.10.1什么是异常 134
3.10.2使用异常处理 135
3.11使用标准库 137
3.11.1程序终止 137
3.11.2用计算机生成随机数 137
3.12程序结构 141
3.12.1局部变量和全局变量 141
3.12.2动态变量和静态变量 142
3.12.3作用域和生命期 144
3.12.4预处理指令 146
3.12.5名字空间 149
3.13实例学习 151
小结 154
习题 156
实验 160
第4章 复合数据类型 166
4.1一维数组 166
4.1.1声明和处理一维数组 166
4.1.2一维数组和函数 171
4.2二维数组 173
4.2.1声明和处理二维数组 173
4.2.2二维数组和函数 178
4.3指针和数组 180
4.3.1指针和一维数组 180
4.3.2指针和二维数组 185
4.4排序和查找 186
4.4.1排序 186
4.4.2查找 188
4.4.3 qsort函数和bsearch函数 192
4.5 array数组 195
4.6动态内存分配 197
4.7字符串 200
4.7.1常用字符处理函数 200
4.7.2 C风格字符串 202
4.7.3 string字符串 205
4.7.4字符串流 211
4.8实例学习 213
小结 218
习题 219
实验 221
第5章 对象和类 228
5.1面向对象程序设计 228
5.2使用类编写程序 228
5.2.1声明类 228
5.2.2创建对象 231
5.2.3类成员函数的定义 234
5.3构造函数和析构函数 235
5.3.1构造函数初始化列表 235
5.3.2带默认参数的构造函数 237
5.3.3析构函数 238
5.4静态成员 239
5.5类作用域 242
5.6对象作为函数参数 244
5.7对象数组 246
5.8异常类 248
5.9编写多文件程序 252
5.10实例学习 254
小结 262
习题 263
实验 266
第6章 对象和类的进一步学习 278
6.1拷贝构造函数 278
6.2 this指针 284
6.3对象组合 288
6.4友元函数和友元类 291
6.5运算符重载 295
6.5.1什么是运算符重载 295
6.5.2运算符函数 296
6.5.3使用成员函数进行运算符重载 298
6.5.4使用普通函数进行运算符重载 301
6.5.5使用友元函数进行运算符重载 304
6.5.6赋值运算符和下标运算符重载 307
6.5.7其他常用运算符重载 312
6.6类模板 318
6.7实例学习 322
小结 329
习题 330
实验 333
第7章 继承和多态 345
7.1继承的概念 345
7.2单继承 346
7.2.1声明单继承派生类 346
7.2.2间接单继承 348
7.2.3保护成员 351
7.2.4继承方式 356
7.2.5赋值兼容 358
7.2.6单继承机制下的构造函数和析构函数 359
7.3多继承 365
7.3.1声明多继承派生类 365
7.3.2多继承机制下的构造函数和析构函数 366
7.3.3继承和访问规则 369
7.3.4虚基类 370
7.4多态的概念 376
7.5虚函数 376
7.5.1普通虚成员函数 376
7.5.2虚析构函数 380
7.6抽象类 382
小结 384
习题 386
实验 390
第8章 文件 399
8.1文件的概念 399
8.1.1流和文件流对象 399
8.1.2文本文件和二进制文件 399
8.2文件操作 400
8.2.1打开文件 400
8.2.2检测错误条件和文件末尾 401
8.2.3关闭文件 401
8.3文件输入输出 402
8.3.1格式化输入输出 402
8.3.2字符输入输出 403
8.3.3行输入输出 404
8.3.4块输入输出 405
8.4文件定位 408
小结 411
习题 411
实验 413
第9章 常用数据结构 416
9.1数组类Vector 416
9.2栈类Stack 420
9.3链表 423
9.3.1什么是链表 423
9.3.2链表的基本操作 424
9.3.3链表类LinkedList 426
9.4队列类Queue 432
小结 434
习题 435
实验 435
第10章 标准模板库 439
10.1标准模板库概述 439
10.2容器 439
10.2.1向量Vector 439
10.2.2双端队列Deque 443
10.2.3列表List 447
10.2.4集合Set和多重集合Multiset 452
10.2.5映射Map和多重映射Multimap 456
10.3容器适配器 459
10.3.1栈Stack 459
10.3.2队列Queue 460
10.3.3优先队列Priority_Queue 462
10.4迭代器 463
10.4.1预定义迭代器 463
10.4.2迭代器的类型 464
10.4.3迭代器相关辅助函数 465
10.4.4迭代器适配器 467
10.5函数对象 472
10.5.1自定义函数对象 472
10.5.2预定义函数对象 474
10.5.3函数适配器 475
10.6算法 477
10.6.1非变动性算法 477
10.6.2变动性算法 479
10.6.3排序及相关算法 484
10.6.4数值算法 488
小结 491
习题 492
实验 493