第1章 程序设计基础 1
1.1计算机系统和工作原理 1
1.1.1计算机系统的组成 1
1.1.2指令与程序 3
1.2信息的表示与存储 5
1.2.1计算机的数字系统 5
1.2.2进位计数制的转换 6
1.2.3数值数据的表示 9
1.2.4非数值数据的表示 13
1.3程序设计语言 14
1.3.1机器语言与汇编语言 14
1.3.2高级语言 15
1.4程序设计概述 16
1.4.1计算机问题求解的基本特点 16
1.4.2算法的定义与特性 16
1.4.3算法的表示 17
1.4.4结构化程序设计 19
1.4.5面向对象程序设计 20
1.4.6程序设计技术前沿 20
1.5 C++概述 21
1.5.1 C++与C语言 21
1.5.2 C++基本词法 22
1.5.3简单的C++程序 23
1.5.4 C++程序基本结构 27
1.5.5 C++程序开发步骤 29
1.5.6 C++程序编码风格 30
习题 30
第2章 数据类型与表达式 31
2.1数据类型 31
2.1.1整型 32
2.1.2浮点型 33
2.1.3字符型 34
2.1.4逻辑型 35
2.2常量 35
2.2.1整型常量 36
2.2.2浮点型常量 36
2.2.3字符常量 37
2.2.4字符串常量 39
2.2.5符号常量 40
2.3变量 41
2.3.1变量的概念 41
2.3.2定义变量 41
2.3.3使用变量 42
2.3.4存储类别 43
2.3.5类型限定 43
2.4运算符与表达式 44
2.4.1运算符与表达式的概念 44
2.4.2算术运算符 47
2.4.3自增自减运算符 48
2.4.4关系运算符 49
2.4.5逻辑运算符 50
2.4.6条件运算符 52
2.4.7位运算符 53
2.4.8赋值运算符 57
2.4.9取长度运算符 59
2.4.10逗号运算符 59
2.4.11圆括号运算符 60
2.4.12常量表达式 60
2.5类型转换 60
2.5.1隐式类型转换 60
2.5.2显式类型转换 63
习题 64
第3章 程序控制结构 67
3.1语句 67
3.1.1简单语句 67
3.1.2复合语句 68
3.1.3注释 69
3.1.4语句的写法 71
3.2输入与输出 72
3.2.1输入流与输出流 73
3.2.2字符输入与输出 80
3.2.3格式化输出 81
3.2.4格式化输入 85
3.3程序顺序结构 87
3.3.1顺序执行 87
3.3.2跳转执行 88
3.4程序选择结构 89
3.4.1 if语句 89
3.4.2 switch语句 92
3.4.3选择结构的嵌套 95
3.4.4选择结构程序举例 99
3.5程序循环结构 101
3.5.1 while语句 101
3.5.2 do语句 103
3.5.3 for语句 104
3.5.4 break语句 106
3.5.5 continue语句 107
3.5.6循环结构的嵌套 108
3.5.7循环结构程序举例 108
习题 112
第4章 函数 115
4.1函数定义 115
4.1.1函数定义的一般形式 115
4.1.2函数返回 118
4.2 函数参数 119
4.2.1形式参数 119
4.2.2实际参数 120
4.2.3参数传递机制 120
4.2.4函数调用栈 121
4.2.5 const参数 123
4.2.6可变参数函数 123
4.3函数原型与调用 125
4.3.1函数声明和函数原型 125
4.3.2库函数的调用方法 128
4.3.3常用库函数 129
4.4内联函数 133
4.5默认参数 135
4.5.1带默认参数的函数 135
4.5.2默认参数函数的调用 136
4.6函数重载 137
4.6.1函数重载定义 137
4.6.2重载函数的调用 140
4.7函数模板 142
4.7.1函数模板的概念 142
4.7.2函数模板的定义和使用 143
4.8函数调用形式 147
4.8.1嵌套调用 147
4.8.2递归调用 149
4.9作用域和生命期 151
4.9.1局部变量 151
4.9.2全局变量 152
4.9.3作用域 153
4.9.4程序映像和内存布局 157
4.9.5生命期 159
4.10对象初始化 162
4.11声明与定义 164
4.12变量修饰小结 166
4.13程序组织结构 168
4.13.1内部函数 168
4.13.2外部函数 168
4.13.3多文件结构 168
4.13.4头文件与工程文件 169
4.13.5提高编译速度 171
4.14函数应用程序举例 172
习题 175
第5章 预处理命令 178
5.1宏定义 178
5.1.1不带参数的宏定义 179
5.1.2带参数的宏定义 181
5.1.3#和##预处理运算 185
5.1.4预定义宏 185
5.2文件包含 186
5.3条件编译 188
5.3.1#define定义条件 188
5.3.2#ifdef、#ifndef 188
5.3.3#i f-#elif 189
5.4其他命令 190
习题 191
第6章 数组 193
6.1一维数组的定义和引用 193
6.1.1一维数组的定义 193
6.1.2一维数组的初始化 195
6.1.3一维数组的引用 195
6.2多维数组的定义和引用 197
6.2.1多维数组的定义 197
6.2.2多维数组的初始化 199
6.2.3多维数组的引用 200
6.3数组与函数 203
6.3.1数组作为函数的参数 203
6.3.2数组参数的传递机制 204
6.4字符串 207
6.4.1字符数组 207
6.4.2字符串 209
6.4.3字符串的输入和输出 211
6.4.4字符串数组 213
6.4.5字符串处理函数 214
6.5 C++字符串类 219
6.5.1字符串对象的定义和引用 219
6.5.2字符串对象的操作 220
6.5.3字符串对象数组 223
6.6数组应用程序举例 223
习题 233
第7章 指针与引用 236
7.1指针与指针变量 236
7.1.1地址和指针的概念 236
7.1.2指针变量 237
7.2指针的使用及运算 239
7.2.1获取对象的地址 239
7.2.2指针的间接访问 240
7.2.3指针变量的初始化与赋值 242
7.2.4指针的有效性 244
7.2.5指针运算 245
7.2.6指针的const限定 250
7.3指针与数组 252
7.3.1指向一维数组元素的指针 253
7.3.2指向多维数组元素的指针 257
7.3.3数组指针 260
7.3.4指针数组 262
7.3.5指向指针的指针 264
7.4指针与字符串 267
7.4.1指向字符串的指针 267
7.4.2指针与字符数组的比较 269
7.4.3指向字符串数组的指针 270
7.5指针与函数 272
7.5.1指针作为函数参数 272
7.5.2函数返回指针值 281
7.5.3函数指针 282
7.6动态内存 286
7.6.1动态内存的概念 286
7.6.2动态内存的分配和释放 287
7.6.3动态内存的应用 290
7.7带参数的main函数 294
7.8引用类型 295
7.8.1引用的概念与定义 295
7.8.2引用的使用 296
7.8.3常引用 299
7.8.4对象、指针与引用的比较 300
习题 301
第8章 自定义数据类型 303
8.1结构体类型 303
8.2结构体对象 305
8.2.1结构体对象的定义 305
8.2.2结构体对象的初始化 308
8.2.3结构体对象的使用 308
8.3结构体与数组 309
8.3.1结构体数组 309
8.3.2结构体数组成员 310
8.4结构体与指针 311
8.4.1指向结构体的指针 311
8.4.2指向结构体数组的指针 313
8.4.3结构体指针成员 314
8.5结构体与函数 315
8.5.1结构体对象作为函数参数 315
8.5.2结构体数组作为函数参数 315
8.5.3结构体指针或引用作为函数参数 316
8.5.4函数返回结构体对象、指针或引用 316
8.6共用体 317
8.6.1共用体概念及类型定义 317
8.6.2共用体对象的定义 318
8.6.3共用体对象的使用 319
8.6.4结构体与共用体嵌套 320
8.7枚举类型 320
8.7.1枚举类型的声明 320
8.7.2枚举类型对象 321
8.8位域 321
8.8.1位域的声明 321
8.8.2位域的使用 323
8.9用户自定义类型 324
8.10链表 327
8.10.1链表的概念 327
8.10.2单链表与双链表 327
8.10.3创建与销毁链表 329
8.10.4链表的运算 331
习题 335
第9章 类与对象 337
9.1类的定义和声明 337
9.1.1类的定义 337
9.1.2成员访问控制 340
9.1.3类的数据成员 341
9.1.4类的成员函数 342
9.1.5类声明与类定义 346
9.1.6类之间的关系 347
9.1.7类和结构体的区别 349
9.2对象的定义和使用 349
9.2.1对象的定义 349
9.2.2对象的动态建立和释放 351
9.2.3对象成员的引用 352
9.3构造函数和析构函数 357
9.3.1构造函数 357
9.3.2构造函数的重载 363
9.3.3带默认参数的构造函数 364
9.3.4默认构造函数 366
9.3.5隐式类类型转换 367
9.3.6复制构造函数 368
9.3.7构造函数小结 373
9.3.8析构函数 374
9.3.9构造函数和析构函数的调用次序 376
9.4对象数组 377
9.5对象指针 378
9.5.1指向对象的指针 378
9.5.2类成员指针 378
9.5.3 this指针 380
9.6类作用域与对象生命期 381
9.6.1类作用域 381
9.6.2对象生命期 386
9.7 const限定 389
9.7.1常对象 389
9.7.2常数据成员 390
9.7.3常成员函数 391
9.7.4指向对象的常指针 392
9.7.5指向常对象的指针变量 393
9.7.6对象的常引用 393
9.8静态成员 394
9.8.1静态数据成员 394
9.8.2静态成员函数 396
9.9友元 398
9.9.1友元函数 398
9.9.2友元类 400
9.10类模板 400
9.10.1类模板的定义 400
9.10.2泛型编程 403
9.11数据封装和信息隐蔽 404
习题 406
第10章 继承与派生 408
10.1类的继承与派生 408
10.1.1基类与派生类 408
10.1.2派生类的定义 410
10.1.3派生类的构成 411
10.2派生类成员的访问 412
10.2.1类的保护成员 412
10.2.2派生类成员的访问权限 413
10.3赋值兼容规则 415
10.4派生类的构造和析构函数 416
10.4.1派生类的构造函数 416
10.4.2派生类的析构函数 418
10.5多重继承 418
10.5.1多重继承派生类 418
10.5.2二义性问题及名字支配规则 419
10.5.3虚基类 421
10.6多态性与虚函数 422
10.6.1多态性的概念 422
10.6.2虚函数 426
10.6.3虚析构函数 431
10.6.4纯虚函数 431
10.6.5抽象类 432
10.7命名的强制类型转换 433
习题 438
第11章 运算符重载 439
11.1运算符重载的概念 439
11.2运算符重载的方法 439
11.2.1运算符函数 439
11.2.2重载运算符的规则 442
11.2.3运算符重载为类成员函数 444
11.2.4运算符重载为友元函数 446
11.3典型运算符的重载 447
11.3.1重载双目运算符 447
11.3.2重载单目运算符 449
11.3.3重载复合赋值运算符 450
11.3.4重载流运算符 450
11.3.5重载类型转换运算符 452
习题 453
第12章 异常处理 454
12.1基本概念 454
12.1.1为什么要异常处理 454
12.1.2程序健壮性 455
12.1.3异常处理的方法 455
12.2异常处理的实现 456
12.2.1抛出异常 456
12.2.2检测捕获异常 457
12.2.3函数声明中的异常接口说明 461
12.2.4异常处理中的构造与析构 461
习题 462
第13章 命名空间 463
13.1命名空间的概念 463
13.2命名空间的定义 465
13.2.1命名空间的定义 465
13.2.2未命名的命名空间 469
13.3命名空间的使用 470
13.3.1命名空间成员的使用 470
13.3.2类和命名空间 472
13.3.3标准命名空间的使用 474
习题 475
第14章 标准库 476
14.1 C++标准库 476
14.2标准输入输出 477
14.2.1 C++流的概念 477
14.2.2文件流 479
14.2.3字符串流 486
14.3标准模板库 488
14.3.1迭代器iterator 488
14.3.2向量vector 489
14.3.3列表list 490
14.3.4队列queue 492
14.3.5栈stack 492
习题 493
第15章 算法 495
15.1算法基本概念 495
15.1.1什么是算法 495
15.1.2算法基本要素 495
15.1.3算法求解过程 496
15.2算法分析 497
15.2.1时间复杂度 497
15.2.2空间复杂度 500
15.3常用算法 500
15.3.1分治法 500
15.3.2动态规划 503
15.3.3贪心算法 506
15.3.4回溯法 508
习题 510
第16章 高级编程技术 513
16.1配置开发环境 513
16.1.1开发环境的路径参数 513
16.1.2开发环境的路径设置 514
16.1.3开发环境的配置 516
16.1.4函数库的包含和连接 517
16.1.5函数库配置举例 519
16.2界面编程 522
16.2.1 Windows编程的基本概念 522
16.2.2数据定义与数据类型 523
16.2.3消息与消息循环 526
16.2.4资源与资源文件 528
16.2.5 Windows应用程序结构 537
16.2.6 Windows编程框架 543
16.2.7图形输出 550
16.2.8事件处理 566
16.2.9控件与对话框 575
16.3图形编程 582
16.3.1图形编程概述 582
16.3.2 OpenGL简介 583
16.3.3 GLUT编程模式 585
16.3.4 Win32编程模式 590
16.4多媒体编程 597
16.4.1 MCI编程 597
16.4.2 MCIWnd编程 603
16.4.3 MMAPI编程 608
16.5网络编程 613
16.5.1 Winsock简介 613
16.5.2 Winsock编程 614
16.5.3 TCP编程模式 617
16.5.4 UDP编程模式 621
16.6数据库编程 624
16.6.1数据库编程概述 624
16.6.2 ODBC简介 625
16.6.3 ODBC编程 628
16.6.4数据库编程举例 635
习题 638
附录A ASCII码对照表 640
附录B C++关键字 641
附录C C++运算符及其优先级、结合性 643
参考文献 646