第1章 C++语言概述 1
1.1 关于面向对象的概念 1
1.1.1 什么是面向对象 1
1.1.2 为什么要引进面向对象 2
1.1.3 面向对象的特点 3
1.2 C++语言与C语言 4
1.2.1 C++语言是一种面向对象的程序设计语言 4
1.2.2 C++语言与C语言的关系 4
1.3 C++语言的词法规则 5
1.3.1 C++语言的字符集 5
1.3.2 单词及词法规则 6
1.4 C++语言的程序结构和书写格式 8
1.4.1 一个C++语言程序实例 8
1.4.2 标准设备的输入输出语句 9
1.4.3 C++语言程序结构的特点 10
1.5 C++语言程序的实现 11
1.4.4 C++语言程序的书写格式 11
1.5.1 VisualC++6.0编译系统的主窗口简介 12
1.5.2 C++单文件应用程序的实现 22
1.5.3 C++多文件应用程序的实现 23
本章小结 26
练习题1 26
作业题1 27
上机题1 30
2.1.1 基本数据类型 32
第2章 常量和变量 32
2.1 数据类型 32
2.1.2 构造数据类型 34
2.2 常量 34
2.2.1 常量的种类 34
2.2.2 常量的定义格式 38
2.3 变量 40
2.3.1 变量的三要素 40
2.3.2 变量的存储类 42
2.3.3 变量的定义格式和输入输出操作 44
2.4 数组 46
2.4.1 数组的定义格式和数组元素的表示方法 47
2.4.2 数组的赋值 48
2.4.3 字符数组 49
本章小结 53
练习题2 53
作业题2 54
上机题2 58
3.1.1 算术运算符 60
第3章 运算符和表达式 60
3.1 运算符的种类及功能 60
3.1.2 关系运算符 61
3.1.3 逻辑运算符 61
3.1.4 位操作运算符 62
3.1.5 赋值运算符 62
3.1.6 其他运算符 63
3.2.1 运算符的优先级 65
3.1.7 C++语言中增添的运算符 65
3.2 运算符的优先级和结合性 65
3.2.2 运算符的结合性 67
3.3 表达式 67
3.3.1 表达式的值和类型 67
3.3.2 表达式中操作数的计算顺序 75
3.4 类型转换 76
3.4.1 保值的隐含转换 76
3.4.2 强制转换 77
本章小结 78
练习题3 79
作业题3 79
上机题3 82
第4章 语句和预处理 84
4.1 表达式语句和复合语句 84
4.1.1 表达式语句和空语句 84
4.2 分支语句 85
4.2.1 条件语句 85
4.1.2 复合语句和分程序 85
4.2.2 开关语句 88
4.3 循环语句 93
4.3.1 while循环语句 93
4.3.2 do-while循环语句 96
4.3.3 for循环语句 98
4.3.4 多重循环 100
4.4 转向语句 104
4.4.1 goto语句 104
4.4.2 break语句 106
4.4.3 continue语句 107
4.5 预处理 108
4.5.1 宏定义命令 108
4.5.2 文件包含命令 111
4.5.3 条件编译命令 111
本章小结 113
作业题4 114
练习题4 114
上机题4 120
第5章 指针和引用 121
5.1 指针的概念 121
5.1.1 什么是指针 121
5.1.2 如何定义指针 121
5.1.3 指针的赋值 122
5.1.4 指针的运算 123
5.2 指针与数组 125
5.2.2 用指针表示数组元素 126
5.2.1 数组名是一个常量指针 126
5.2.3 指向数组的指针 130
5.2.4 指针数组 132
5.2.5 字符指针和字符串处理函数 133
5.3 引用的概念 137
5.3.1 什么是引用 137
5.3.2 引用的应用 139
本章小结 139
作业题5 140
练习题5 140
上机题5 145
第6章 函数 146
6.1 函数的定义格式和说明方法 146
6.1.1 函数的定义格式 146
6.1.2 函数的说明方法 147
6.2 函数的参数和返回值 148
6.2.1 函数的实参和形参 148
6.2.2 函数参数的求值顺序 149
6.2.3 设置函数形参的默认值 149
6.2.4 函数返回值的实现 151
6.3 函数的存储类 152
6.3.1 外部函数 152
6.3.2 内部函数 152
6.4 函数的调用方式 152
6.4.1 传值调用方式 153
6.4.2 引用调用方式 155
6.5.1 函数的嵌套调用 156
6.5 函数的嵌套调用和递归调用 156
6.5.2 函数的递归调用 158
6.6 指针和引用做函数参数和返回值 161
6.6.1 指针做函数参数和返回值 161
6.6.2 引用做函数参数和返回值 163
6.7 重载函数和内联函数 166
6.7.1 重载函数 166
6.7.2 内联函数 169
本章小结 170
练习题6 171
作业题6 171
上机题6 178
第7章 类和简单对象 180
7.1 类和对象的定义 180
7.1.1 类的定义格式 180
7.1.2 对象的定义和成员的表示 184
7.2 构造函数和析构函数 187
7.2.1 构造函数 187
7.2.2 析构函数 188
7.2.3 对象的赋值 189
7.2.4 类和简单对象的应用实例 189
7.3 成员函数的特性 195
7.3.1 成员函数的重载性 195
7.3.2 成员函数可以设置默认参数 197
7.3.3 成员函数的内联和外联 198
7.4 静态成员 199
7.4.1 静态数据成员 199
7.4.2 静态成员函数 202
7.5 常成员 204
7.5.1 常数据成员 204
7.5.2 常成员函数 205
7.6 指向类的成员的指针 207
7.6.1 指向类的数据成员的指针 208
7.6.2 指向类的成员函数的指针 209
7.7 类型转换 210
7.7.1 将指定类型的数据转换为对象 210
7.7.2 将对象转换为指定类型的数据 211
7.8 友元 213
7.8.1 友元函数 213
7.8.2 友元类 214
7.9 类的作用域及其他 216
7.9.1 类的作用域 217
7.9.2 嵌套类和局部类 217
7.9.3 类的说明 220
7.10.1 结构的概念和应用 222
7.10 结构 222
7.10.2 用struct定义类 227
本章小结 228
练习题7 229
作业题7 230
上机题7 241
第8章 类和复杂对象 243
8.1 对象指针和对象引用 243
8.1.1 对象指针 243
8.1.2 对象引用 245
8.1.3 this指针 248
8.2 常对象 250
8.2.1 常对象的特点 250
8.2.2 常对象指针和常对象引用 251
8.3 子对象 255
8.3.1 子对象的定义及初始化 255
8.3.2 子对象使用举例 256
8.4 对象数组和指向对象数组的指针 258
8.4.1 对象数组 258
8.4.2 对象指针数组 261
8.4.3 指向对象数组的指针 264
8.5 堆对象 268
8.5.1 运算符new和运算符delete 268
8.5.2 堆对象和堆对象数组的创建和释放 270
8.6 对象的生存期 277
8.6.1 局部对象 277
8.6.3 静态对象 278
8.6.2 全局对象 278
本章小结 280
练习题8 280
作业题8 281
上机题8 288
第9章 继承性 289
9.1 基类和派生类 289
9.1.1 继承和派生的概念 289
9.1.3 派生类的定义格式 290
9.1.2 单一继承和多重继承 290
9.1.4 基类成员在派生类中的访问权限 292
9.2 单一继承 296
9.2.1 单一继承程序举例 296
9.2.2 单一继承派生类的构造函数和析构函数 299
9.2.3 子类型和赋值兼容规则 307
9.3 多重继承 312
9.3.1 多重继承派生类的构造函数和析构函数 313
9.3.2 多重继承的二义性 321
9.3.3 虚基类 330
9.3.4 多重继承应用举例 336
本章小结 343
练习题9 343
作业题9 343
上机题9 357
第10章 多态性 359
10.1函数重载和运算符重载 359
10.1.1 函数重载 359
10.1.2 运算符重载 362
10.2 静态联编、动态联编和虚函数 376
10.2.1 静态联编 376
10.2.2 动态联编 378
10.2.3 虚函数 379
10.2.4 多态性与隐藏性 389
10.2.5 虚析构函数 392
10.3 纯虚函数和抽象类 393
10.3.1 纯虚函数 393
10.3.2 抽象类 395
10.4 面向对象的程序设计 398
10.4.1 面向对象程序的设计方法 398
10.4.2 应用实例 401
本章小结 404
练习题10 405
作业题10 405
上机题10 416
11.1.1 基本的I/O流类库 417
11.1 I/O流类库的功能 417
第11章 C++语言的I/O流类库 417
11.1.2 文件I/O操作流类库 418
11.1.3 字符串流操作流类库 419
11.2 常用的读写操作 419
11.2.1 屏幕输出操作 419
11.2.2 键盘输入操作 424
11.3 格式化输入输出操作 429
11.3.1 使用流对象的成员函数进行格式输出 429
11.3.2 使用控制符进行格式输出 434
11.4 插入符和提取符的重载 437
11.5 磁盘文件的输入和输出操作 438
11.5.1 文件的打开和关闭操作 438
11.5.2 文本文件的读写操作 440
11.5.3 二进制文件的读写操作 444
11.5.4 随机文件的读写操作 447
11.5.5 文件操作的其他函数 451
11.6 字符串流操作 453
11.6.1 字符串流的输出操作 454
11.6.2 字符串流的输入操作 455
11.7 流错误处理 457
11.7.1 错误状态字和状态函数 457
11.7.2 清除/设置错误状态位 458
本章小结 459
练习题11 459
作业题11 460
上机题11 465
12.1.2 为什么要引进模板 467
12.1.1 什么是模板 467
第12章 模板 467
12.1 模板的概念 467
12.2 函数模板 469
12.2.1 函数模板的定义格式 469
12.2.2 函数模板的应用举例 471
12.3 类模板 476
12.3.1 类模板的定义格式和模板类的对象 476
12.3.2 类模板的应用举例 479
12.4 类模板的应用 488
12.4.1 类模板的对象或对象引用可作函数参数 489
12.4.2 类模板可作基类生成派生类 490
本章小结 498
练习题12 498
作业题12 498
上机题12 503
附录A 作业题答案 504