第1章 C++语言概述 1
1.1 程序设计概述 1
1.1.1 程序设计方法 1
1.1.2 程序设计语言 2
1.2 C++语言的发展历史 5
1.3 简单C++语言程序的构成 6
1.4 C++字符集、标识符和关键字 9
1.4.1 字符集 9
1.4.2 标识符 9
1.4.3 关键字 9
1.5 C++语言程序开发步骤和调试方法 10
1.5.1 C++程序开发步骤 10
1.5.2 在Visual C++ 6.0 环境中开发C++程序 11
1.6 案例实训 16
1.7 小结 17
1.8 习题 18
第2章 基本数据类型和表达式 20
2.1 数据类型概述 20
2.2 C++基本数据类型 21
2.3 常量 24
2.4 变量 29
2.5 运算符和表达式 32
2.5.1 算术运算符 33
2.5.2 位运算符 35
2.5.3 赋值运算符 38
2.5.4 sizeof运算符 39
2.5.5 逗号运算符 40
2.6 运算符的优先级和结合性 41
2.7 类型转换 43
2.7.1 自动类型转换 43
2.7.2 强制类型转换 44
2.7.3 赋值转换 45
2.8 案例实训 45
2.9 小结 46
2.10 习题 47
第3章 语句和流程控制 49
3.1 C++语句 49
3.2 结构化程序设计 51
3.3 顺序结构程序设计 52
3.4 选择结构程序设计 53
3.4.1 关系运算符 54
3.4.2 逻辑运算符 55
3.4.3 条件运算符 59
3.4.4 if语句 60
3.4.5 switch语句 66
3.4.6 选择结构程序设计举例 69
3.5 循环结构程序设计 73
3.5.1 while语句 73
3.5.2 do-while语句 74
3.5.3 for语句 76
3.5.4 三种循环的比较 78
3.5.5 循环结构程序设计举例 79
3.6 转移语句 81
3.6.1 break语句 81
3.6.2 continue语句 82
3.6.3 goto语句 83
3.7 案例实训 84
3.8 小结 85
3.9 习题 86
第4章 函数和预处理 89
4.1 概述 89
4.2 函数 89
4.2.1 函数定义 89
4.2.2 函数调用 92
4.2.3 函数声明 94
4.2.4 函数的参数传递 99
4.2.5 内部函数和外部函数 101
4.3 变量的作用域 103
4.3.1 局部变量 103
4.3.2 全局变量 104
4.3.3 全局变量的声明 105
4.3.4 内部(静态)全局变量和外部全局变量 107
4.4 变量的存储分配(生命期) 109
4.5 C++的多模块(文件)程序结构 111
4.6 命名空间(namespace) 115
4.6.1 命名空间 115
4.6.2 标准命名空间std 122
4.7 递归函数 122
4.7.1 递归函数的定义 122
4.7.2 递归函数的作用 124
4.8 重载函数 126
4.8.1 重载函数的定义 126
4.8.2 重载函数的绑定 127
4.9 带默认值的形参 128
4.10 内联函数 130
4.11 编译预处理 131
4.11.1 宏定义 131
4.11.2 条件编译 133
4.11.3 文件包含 135
4.12 案例实训 138
4.13 小结 139
4.14 习题 140
第5章 自定义数据类型 145
5.1 自定义数据类型概述 145
5.2 枚举类型 145
5.3 数组类型 149
5.3.1 一维数组 149
5.3.2 二维数组 156
5.4 字符数组(字符串) 162
5.4.1 以‘\0’结束的字符串 162
5.4.2 C++字符串string 167
5.5 结构 169
5.5.1 结构类型的定义 169
5.5.2 结构变量的定义和初始化 170
5.5.3 结构变量成员的访问 172
5.5.4 结构与函数 173
5.6 联合 177
5.7 指针 179
5.7.1 指针的基本概念 179
5.7.2 指针变量的定义 179
5.7.3 指针变量的操作 180
5.7.4 指向常量的指针和指针常量 186
5.7.5 数组与指针 187
5.7.6 指针与函数 191
5.7.7 指针数组与数组指针 201
5.7.8 多级指针 204
5.7.9 动态分配和撤消内存 205
5.7.10 链表 208
5.8 引用类型 215
5.9 用typedef定义新类型 217
5.10 案例实训 218
5.11 小结 222
5.12 习题 223
第6章 类和对象 228
6.1 面向对象程序设计概述 228
6.2 类的定义 232
6.2.1 数据成员 232
6.2.2 成员函数 233
6.2.3 信息隐藏(访问控制) 236
6.3 对象 238
6.3.1 对象的创建 238
6.3.2 对象成员的访问 240
6.3.3 对象的存储 244
6.3.4 对象的赋值 246
6.4 对象的创建和撤消 247
6.4.1 构造函数 247
6.4.2 析构函数 259
6.4.3 动态对象的创建和撤消 263
6.5 this指针 266
6.6 const成员 267
6.6.1 const数据成员 267
6.6.2 const函数成员 268
6.6.3 const对象 269
6.7 static成员 271
6.7.1 static数据成员 271
6.7.2 static成员函数 272
6.8 友元 274
6.8.1 友元函数 275
6.8.2 友元类 279
6.9 内部类 280
6.10 案例实训 283
6.11 小结 287
6.12 习题 288
第7章 运算符重载 291
7.1 运算符重载概述 291
7.2 重载运算符的实现 293
7.2.1 作为成员函数重载运算符 293
7.2.2 作为全局(友元)函数重载运算符 300
7.2.3 重载的规则和原则 303
7.3 特殊运算符的重载 307
7.3.1 赋值运算符“=” 307
7.3.2 下标运算符“[]” 311
7.3.3 函数调用运算符“()” 313
7.3.4 类成员访问运算符“-〉” 314
7.3.5 自增自减运算符“++、--” 316
7.3.6 new与delete运算符 317
7.3.7 自定义类型转换运算符 323
7.4 案例实训 326
7.5 小结 329
7.6 习题 330
第8章 继承与派生 333
8.1 继承与派生的概念 333
8.2 单继承 336
8.2.1 单继承的定义 336
8.2.2 继承方式及派生类成员的访问 339
8.2.3 派生类对象的初始化和撤消 342
8.3 多重继承 347
8.3.1 多重继承的定义 348
8.3.2 成员名的二义性 349
8.3.3 重复继承——虚基类 350
8.4 继承与组合 355
8.5 子类型 357
8.6 案例实训 358
8.7 小结 361
8.8 习题 362
第9章 多态性与虚函数 366
9.1 多态性的概念 366
9.2 虚函数 366
9.3 静态绑定与动态绑定 373
9.4 纯虚函数和抽象类 374
9.5 虚函数动态绑定实现 376
9.6 案例实训 378
9.7 小结 381
9.8 习题 382
第10章 输入输出流 385
10.1 关于流 385
10.1.1 流的概念 385
10.1.2 I/O流的层次结构 385
10.2 C++ I/O类库概览 388
10.2.1 C++ I/O类库层次结构 388
10.2.2 I/O基本类的成员及功能 389
10.3 基于I/O类库的控制台I/O 393
10.3.1 控制台输出 394
10.3.2 控制台输入 399
10.3.3 用户自定义类型的I/O 404
10.4 基于I/O类库的文件I/O 405
10.4.1 文件的概念 405
10.4.2 文件输出 406
10.4.3 文件输入 412
10.4.4 文件随机存取 415
10.5 基于I/O类库的字符串I/O 419
10.6 案例实训 420
10.7 小结 423
10.8 习题 423
第11章 异常处理 425
11.1 异常的概念 425
11.2 C++的异常处理机制 428
11.2.1 抛出异常throw 428
11.2.2 捕获和处理异常try-catch 428
11.2.3 自定义异常类 431
11.2.4 异常处理的嵌套 433
11.2.5 异常规范 435
11.2.6 函数堆栈的回退 437
11.3 案例实训 441
11.4 小结 443
11.5 习题 443
第12章 泛型机制——模板 446
12.1 泛型程序设计的概念 446
12.2 函数模板 447
12.3 类模板 451
12.4 C++标准模板库 456
12.5 案例实训 458
12.6 小结 461
12.7 习题 461