目录 3
第一部分 C++基础:类C特性 3
第一章 C语言概述 3
1.1 C语言的起源 3
1.2 C语言是中级语言 4
1.3 C语言是结构化语言 5
1.4 C语言是程序员的语言 7
1.5 C语言的程序结构 9
1.6 库和连接 11
1.7 分离编译 12
2.1 五种基本数据类型 14
第二章 表达式 14
2.2 修饰基本类型 16
2.3 标识符命名 17
2.4 变量 18
2.4.1 变量在哪里说明 18
2.4.2 局部变量 18
2.4.3 形式参数 22
2.4.4 全局变量 23
2.5 存取修饰符 25
2.5.1 const 25
2.5.2 volatile 27
2.6.1 外部的 28
2.6 存储分类符 28
2.6.2 静态变量 30
2.6.3 寄存器变量 33
2.7 变量初始化 35
2.8 常量 36
2.8.1 十六进制和八进制常量 37
2.8.2 串常量 37
2.8.3 反斜线字符常量 37
2.9 运算符 39
2.9.1 赋值运算符 39
2.9.2 赋值中的类型转换 40
2.9.3 多重赋值 41
2.9.4 算术运算符 42
2.9.5 增量和减量运算符 43
2.9.6 关系和逻辑运算符 44
2.9.7 位操作符 47
2.9.8 ?操作符 52
2.9.9 指针操作符&和* 53
2.9.10 编译时操作符sizeof 55
2.9.11 逗号操作符 56
2.9.12 点(.)和箭头(->)操作符 56
2.9.13 括号和方括号操作符 57
2.10 表达式 58
2.9.14 关于优先级的小结 58
2.10.1 求值顺序 59
2.10.2 表达式中的类型转换 59
2.10.3 构成符 60
2.10.4 空格与括号 61
2.10.5 C语言中的简写形式 62
第三章 C语言的语句 63
3.1 C语言的真值和假值 64
3.2 选择语句 64
3.2.1 if语句 64
3.2.2 嵌套if语句 66
3.2.3 多重嵌套if:阶梯型if-else-if语句 68
3.2.4 操作符?的替代 69
3.2.5 条件表达式 73
3.2.6 switch开关语句 74
3.2.7 嵌套的switch语句 78
3.3 迭代语句 79
3.3.1 for循环 79
3.3.2 for循环的变化型式 80
3.3.3 无限循环 85
3.3.4 没有循环体的for循环 86
3.3.5 while循环 87
3.3.6 do-while循环 90
3.4.1 return语句 91
3.4 转移语句 91
3.4.2 goto语句 92
3.4.3 break语句 93
3.4.4 exit语句 95
3.4.5 continue语句 96
3.5 表达式语句 98
3.6 块语句 99
第四章 数组和字符串 100
4.1 一维数组 101
4.2 产生指向数组的指针 102
4.3 向函数传递一维数组 103
4.4 字符串 104
4.5 二维数组 106
4.6 多维数组 113
4.7 带下标的指针 114
4.8 数组初始化 116
4.9 棋盘游戏实例 119
第五章 指针 124
5.1 指针是什么? 125
5.2 指针变量 125
5.3 指针运算符 126
5.4 指针表达式 128
5.4.1 指针赋值 128
5.4.2 指针运算 128
5.4.3 指针比较 130
5.5 指针和数组是紧密相联的 133
5.6 多级间址 135
5.7 指针的初始化 137
5.8 指向函数的指针 139
5.9 C语言的动态分配函数 142
5.10 指针应用中的某些问题 144
第六章 函数 149
6.1 函数的一般形式 149
6.2 函数的作用域规则 150
6.3 函数变元 151
6.3.1 传值调用和引用调用 152
6.3.2 引用调用的建立 153
6.3.3 用数组调用函数 154
6.4 传给main()的变元argc与argv 158
6.5 返回语句 162
6.5.1 从函数返回 162
6.5.2 返回值 164
6.6 返回非整型值的函数 166
6.7 函数原型 168
6.8 返回指针 171
6.9 void类型的函数 172
6.10 main()返回什么? 173
6.11 递归 174
6.13 传统的与现代的函数说明 176
6.12 说明变长参数表 176
6.14 实现问题 178
6.14.1 参数和通用函数 178
6.14.2 效率 178
第七章 结构、联合、枚举及用户定义的类型 181
7.1 结构 182
7.1.1 引用结构元素 184
7.1.2 结构赋值 185
7.2 结构数组 185
7.3 向函数传递结构 186
7.3.1 向函数传递结构元素 186
7.3.2 向函数传递完整结构 187
7.4 结构指针 188
7.5 结构中的数组和结构 192
7.6 位域 193
7.7 联合 196
7.8 枚举 199
7.9 用sizeof增强移植性 202
7.10 类型定义typedef 203
第八章 控制台I/O 205
8.1 一个重要的应用说明 206
8.2 读写字符 206
8.2.2 getchar()的替代 208
8.2.1 getchar()的有关问题 208
8.3 读写字符串 209
8.4 格式化的控制台I/O 213
8.5 printf() 213
8.5.1 打印字符 214
8.5.2 打印数字 215
8.5.3 显示一个地址 216
8.5.4 %n描述符 217
8.5.5 格式化代码修饰符 217
8.5.6 最小域宽符 217
8.5.7 精度描述符 219
8.5.8 调整输出 220
8.5.10 *和#修饰符 221
8.5.9 处理其它数据类型 221
8.6 scanf() 222
8.6.1 格式说明符 223
8.6.2 输入数字 223
8.6.3 输入无符号整数 224
8.6.4 用scanf()读单个字符 225
8.6.5 读字符串 225
8.6.6 读入地址 226
8.6.7 %n描述符 226
8.6.8 使用一个扫描集 226
8.6.11 必须向scanf()传递地址 228
8.6.9 丢弃期望的空白符 228
8.6.10 控制串中的非空白符 228
8.6.12 格式化修饰符 229
8.6.13 压缩输入 229
第九章 ANSI C的标准文件I/O 231
9.1 历史回顾 231
9.2 流和文件 232
9.2.1 流 232
9.2.2 文件 233
9.3 文件系统基础 234
9.3.1 文件指针 235
9.3.2 打开一个文件 236
9.3.3 关闭一个文件 238
9.3.4 写一个字符 238
9.3.5 读一个字符 239
9.3.6 使用fopen(),getc(),putc()和fclose() 240
9.3.7 使用feof() 242
9.3.8 用fputs()和fgets()操作字符串 244
9.3.9 rewind() 245
9.3.10 ferror() 246
9.3.11 删除文件 249
9.3.12 清除一个流 250
9.4 fread()和fwrite() 250
9.5 freek()和随机存取I/O 253
9.6 fprintf()和fscanf() 255
9.7 标准流 256
9.7.1 控制台I/O连接 257
9.7.2 使用freopen()重定向标准流 258
第十章 C语言的预处理程序和注释 260
10.1 C语言的预处理程序 260
10.2 #define 261
10.3 #error 264
10.4 #include 264
10.5 条件编译指令 265
10.5.1 #if,#else,#elif,和#endif 265
10.5.2 #ifdef和#ifndef 269
10.6 #undef 270
10.7 #line 271
10.8 #pragam 272
10.9 #和##预处理操作符 272
10.10 预定义的宏名 273
10.11 注释 274
第二部分 C++的专有特征 277
第十一章 C++概述 277
11.1 C++的起源 278
11.2 面象对象的程序设计是什么 279
11.2.2 多态性 280
11.2.1 对象 280
11.2.3 继承性 281
11.3 C++的程序设计风格 281
11.4 C++的类 287
11.5 函数重载 292
11.6 运算符重载 296
11.7 继承性 297
11.8 构造函数和析构函数 303
11.9 C++的关键字 308
11.10 C++程序的一般结构 309
12.1 类 310
第十二章 类和对象 310
12.2 结构和类 315
12.3 联合和类 317
12.4 友元函数 320
12.5 内联函数 326
12.6 在类中定义内联函数 329
12.7 参数化的构造函数 331
12.8 静态类成员 333
12.8.1 静态数据成员 333
12.8.2 静态成员函数 337
12.9 何时执行构造函数和析构函数 340
12.11 作用域分辨符 342
12.10 嵌套类 342
12.12 局部类 343
12.13 向函数传递对象 344
12.14 返回对象 347
12.15 对象赋值 348
第十三章 数组、指针和引用 349
13.1 对象数组 349
13.2 指向对象的指针 352
13.3 this指针 354
13.4 指向派生类型的指针 356
13.5 指向类成员的指针 359
13.6 引用 362
13.6.1 引用参数 363
13.6.2 向对象传递引用 366
13.6.3 返回引用 368
13.6.4 独立引用 369
13.6.5 对引用的限制 371
13.7 格式问题 371
13.8 C++的动态分配符 372
第十四章 函数和运算符重载 382
14.1 函数重载 382
14.2 重载的过去和现在 388
14.3 重载构造函数 388
14.4 求重载函数的地址 391
14.5 运算符重载 392
14.6 使用friend重载运算符 400
14.6.1 使用friend重载++和-- 403
14.6.2 friend operator函数增加了灵活性 405
14.7 重载的new和delete 408
14.8 重载某些特殊运算符 414
14.8.1 重载[] 414
14.8.2 重载() 418
14.8.3 重载-> 421
14.9 重载逗号运算符 421
15.1 基类存取控制 425
第十五章 继承性 425
15.2 继承多个基类 433
15.3 构造函数、析构函数和继承 434
15.3.1 何时执行构造函数和析构函数 434
15.3.2 向基类构造函数传递参数 438
15.4 授权存取 443
15.5 虚基类 446
第十六章 虚函数和多态性 452
16.1 虚函数 452
16.1.1 继承虚属性 456
16.1.2 虚函数的层次性 458
16.2 纯虚函数 461
16.3 使用虚函数 464
16.4 早期和后期联编 467
第十七章 C++的I/O系统基础 469
17.1 C++的流 470
17.2 基本的流类 470
17.3 格式化的I/O 471
17.3.1 用ios成员格式化 472
17.3.2 设置格式标志 473
17.3.3 清除格式标志 475
17.3.4 setf()的重载形式 475
17.3.5 检查格式标志 478
17.3.6 设置所有标志 481
17.3.7 使用width()、precision()和fill() 482
17.3.8 用操纵符格式化I/O 484
17.4 重载<<和>> 486
17.4.1 创建自己的插入符 487
17.4.2 创建自己的提取符 494
17.5 创建自己的操纵符函数 497
17.5.1 创建无参数的操纵符 498
17.5.2 创建带参数的操纵符 501
17.6 关于老式流类库的简短说明 506
第十八章 C++文件I/O 507
18.1 fstream.h和文件类 508
18.2 打开和关闭文件 508
18.3 读和写文本文件 511
18.4 二进制I/O 514
18.5 另外的get()函数 520
18.6 getline() 520
18.7 跟踪EOF 522
18.8 ignore()函数 524
18.9 peek()和putback() 525
18.10 flush() 526
18.11 随机存取 526
18.12 I/O状态 531
18.13 定制的I/O和文件 533
第十九章 基于数组的I/O 538
19.2 创建基于数组的输出流 539
19.1 基于数组的类 539
19.3 使用数组作输入 542
19.4 使用二进制I/O 544
19.5 基于数组的输入/输出流 545
19.6 数组内随机存取 546
19.7 使用动态数组 547
19.8 操纵符和基于数组的I/O 548
19.9 定制的提取符和插入符 550
19.10 基于数组格式的用途 553
第二十章 问题和高级论题 554
20.1 缺省函数变元 554
20.2 创建转换函数 560
20.3 拷贝构造函数 565
20.4 动态初始化 568
20.5 常量和可变成员函数 569
20.6 使用关键字asm 569
20.7 连接说明 570
20.8 以前的重载 571
20.9 C和C++之间的区别 572
20.10 C++的发展方向 573
第三部分 C++的一些应用 576
第二十一章 字符串类 576
21.1 定义字符串类型 577
21.2 字符串类 579
21.3 构造函数和析构函数 581
21.4 字符串I/O 583
21.5 赋值函数 585
21.6 连接 587
21.7 子字符串减法 589
21.8 关系运算符 592
21.9 各种字符串函数 593
21.10 完整的字符串类 594
21.11 字符串的使用 606
第二十二章 弹出式窗口类 610
22.1 弹出式窗口 611
22.2.1 PC视频系统 612
22.2 创造一些视频支持函数 612
22.2.2 存取BIOS 614
22.2.3 确定视频RAM的地址 615
22.2.4 写视频RAM 617
22.2.5 置光标 618
22.3 窗口类 618
22.4 显示和移去窗口 622
22.5 窗口I/O 626
22.6 一个完整的窗口系统 633
22.7 修改 650
23.1 双向链表类 651
第二十三章 链表类 651
23.1.1 store()函数 654
23.1.2 remove()函数 656
23.1.3 显示表 657
23.1.4 改变和查找表中的对象 658
23.1.5 完整的dblink类和样板程序 659
23.2 定义一个样板双向链表基类 667
23.2.1 双向链表基类 667
23.2.2 定义说明双向链表类 668
23.3 其它实现方法 675
附录A 一些公共类 677
A.1 复数类 677
A.2 BCD类 680