第一篇 C+语言基础 1
第1章 C++语言概述 1
1.1 C++语言发展概述 1
1.1.1 C++语言产生的背景 2
1.1.2 C++语言的发展 4
1.2面向对象的程序设计方法概述 5
1.2.1传统的结构化程序设计 5
1.2.2面向对象的程序设计 5
1.2.3面向对象的程序设计方法 7
1.3面向对象的程序设计特征 8
1.3.1抽象 8
1.3.2类 9
1.3.3封装 10
1.3.4继承 11
1.3.5多态 12
1.4 C++语言的语法规则与书写格式 13
1.4.1 C++标识符与关键字 13
1.4.2 C++程序结构的特点 15
1.4.3 C++的语法规则与书写格式 16
1.4.4简单的C++程序设计范例 16
小结 17
习题与练习 17
第2章 C++的数据类型、常量与变量 19
2.1 C++的基本数据类型 19
2.1.1整型数据类型 19
2.1.2浮点型数据类型 20
2.1.3字符数据类型 20
2.1.4逻辑数据类型 21
2.1.5空数据类型 21
2.2常量 21
2.2.1常量定义 21
2.2.2数值常量 22
2.2.3字符与字符串常量 22
2.3变量、变量的存储类型与作用域 23
2.3.1变量定义 23
2.3.2变量的作用域 24
2.3.3变量的存储类型 28
2.3.4内部变量和外部变量 29
2.4 C++的数据类型转换 30
2.4.1自动数据类型转换 30
2.4.2强制数据类型转换 30
2.5 C++的自定义数据类型 31
小结 31
习题与练习 32
第3章 C++语言的编程基础 33
3.1 C++运算符 33
3.1.1算术运算符 33
3.1.2关系运算符 34
3.1.3逻辑运算符 34
3.1.4位操作运算符 34
3.1.5自增(减)运算符 34
3.1.6赋值与复合运算符 35
3.1.7其他运算符与运算符优先级 36
3.2 C++表达式 37
3.2.1 C++表达式的种类 37
3.2.2使用表达式时应注意的事项 38
3.3编译预处理 38
3.3.1文件包含 39
3.3.2条件编译 39
3.3.3宏定义 40
3.3.4带参数的宏定义 40
3.4 C++语句概述 41
3.4.1复合语句 41
3.4.2表达式语句与空语句 41
3.5 C++的输入、输出简介 41
3.5.1 C++语言的输入与输出 41
3.5.2 C++输出控制格式 42
小结 43
习题与练习 44
第4章 C++的控制结构 47
4.1 C++的控制结构概述 47
4.2选择控制结构 48
4.2.1二分支控制结构 48
4.2.2 if语句的应用 51
4.2.3多分支控制结构 53
4.2.4 switch语句的应用 54
4.3循环控制结构 56
4.3.1 while循环语句 56
4.3.2 while循环语句应用 57
4.3.3 for循环语句 59
4.3.4 for循环语句应用 62
4.3.5 do …while循环语句 63
4.3.6 do …while循环语句应用 64
4.3.7三种循环语句的比较 64
4.3.8多重循环 66
4.3.9三种循环语句的混合嵌套应用 68
4.4转向控制语句 69
4.4.1 break语句 69
4.4.2 continue语句 69
4.4.3 break语句与continue语句的比较 70
4.4.4 return语句 70
4.4.5 goto语句 70
4.5控制语句的应用 72
小结 75
习题与练习题 75
第5章 C++语言的高级数据类型 78
5.1枚举数据类型 78
5.1.1枚举数据类型的定义与枚举变量 78
5.1.2枚举类型变量的赋值 79
5.2联合数据类型 80
5.2.1联合数据类型及联合变量的定义 80
5.2.2联合数据类型的特点与应用 81
5.3结构数据类型 82
5.3.1结构数据类型定义的一般格式 83
5.3.2结构类型变量的定义与应用 83
5.4数组变量与字符串 85
5.4.1一维数组变量 86
5.4.2一维数组变量的应用 87
5.4.3二维数组变量 89
5.4.4二维数组变量的应用 90
5.4.5字符型数组变量 94
5.4.6数组变量的存储 95
5.4.7字符数组与字符函数 96
5.5数组变量与结构变量 99
5.6指针数据类型 101
5.6.1指针变量 101
5.6.2指针数据类型的基本概念 104
5.6.3变量的引用 105
5.6.4无类型指针 106
5.6.5指针变量与数组变量 106
5.6.6指向指针的指针 109
小结 110
习题与练习 111
第6章 C++语言的函数 113
6.1函数的定义 113
6.1.1函数定义 113
6.1.2函数的声明 114
6.1.3函数的形参与实参 115
6.2函数的调用 115
6.2.1函数调用的方式 115
6.2.2函数的传值调用 117
6.2.3函数的传址调用 118
6.2.4函数的引用调用 119
6.3函数的默认参数 119
6.4内部函数与外部函数 120
6.4.1内部函数 120
6.4.2外部函数 121
6.5标识符的作用域 122
6.5.1作用域的种类 122
6.5.2标识符作用域的规定 123
6.6函数运算结果的返回方式 123
6.6.1用全局变量返回函数的运算结果 123
6.6.2用return语句返回函数的运算结果 123
6.6.3用参数返回函数运算结果 124
6.7内联函数 125
6.7.1内联函数的定义与使用 125
6.7.2内联函数与带参宏的区别 126
6.8重载函数 126
6.9函数嵌套调用与递归调用 127
6.9.1函数嵌套调用 127
6.9.2函数递归调用 129
6.10函数与数组 131
6.10.1形参与实参使用数组 131
6.10.2形参使用指针、实参使用数组 132
6.11函数与指针 133
6.11.1指针作函数的参数 133
6.11.2指针函数 134
6.11.3函数指针 134
6.11.4函数指针数组 137
6.12复杂数据类型的识别方法 137
6.13函数模板 138
6.13.1函数模板的概念 138
6.13.2函数模板的定义与使用 139
6.13.3函数模板的应用 140
6.14函数应用 141
小结 146
习题与练习 146
第二篇 面向对象的程序设计 149
第7章 C++的类与对象 149
7.1 C++的类 150
7.1.1类的意义 150
7.1.2类定义 150
7.1.3类成员函数的定义 153
7.1.4类成员的访问控制 154
7.1.5类的作用域 155
7.2 C++的对象 155
7.2.1对象与类的关系 155
7.2.2对象的基本特征 156
7.2.3对象定义 156
7.2.4对象成员的表示方法 157
7.2.5对象成员的特点 158
7.3构造函数和析构函数 159
7.3.1构造函数 159
7.3.2拷贝构造函数 160
7.3.3默认构造函数与带默认参数的构造函数 163
7.3.4重载构造函数 165
7.3.5析构函数 166
7.3.6构造函数与析构函数的调用说明 169
7.3.7构造函数与析构函数应用实例 171
7.4内联成员与友元成员 174
7.4.1内联成员函数 174
7.4.2友元函数与友元类 174
7.5局部类和组合类 178
7.5.1局部类 179
7.5.2组合类 179
7.6对象与指针、数组 184
7.6.1对象的指针 184
7.6.2 this指针 188
7.6.3对象的数组 190
7.7动态内存分配 193
7.7.1 new运算 193
7.7.2 delete运算 194
7.8静态成员 196
7.8.1静态数据成员 197
7.8.2静态成员函数 199
7.9公有数据的保护 203
7.9.1常对象 204
7.9.2常数据成员 204
7.9.3常成员函数 205
7.9.4指向对象的常指针 207
7.9.5指向常对象的指针 207
7.9.6对象的常引用 210
7.10类模板 211
7.10.1类模板的概念 211
7.10.2类模板的定义 213
7.10.3类模板的应用 215
小结 218
习题与练习 219
第8章 C++类的继承与派生 221
8.1继承与派生的概念 221
8.2 C++的派生类 222
8.2.1派生类的定义 222
8.2.2派生类的三种继承方式 223
8.2.3基类与派生类的关系 226
8.2.4派生类的对象 230
8.3派生类的初始化 230
8.3.1派生类的构造函数 231
8.3.2派生类的析构函数 233
8.4派生类的友元 233
8.5多派生与多层派生 234
8.5.1多派生 234
8.5.2多层派生 235
8.6类的多继承 237
8.6.1多继承 237
8.6.2多继承派生类的构造函数 239
8.6.3多继承的注意事项 239
8.7虚基类 241
8.7.1虚基类 241
8.7.2虚基类的构造函数 243
8.8赋值兼容规则 244
小结 246
习题与练习 247
第9章 C++类的多态与抽象 249
9.1类的多态性 249
9.1.1多态性概述 249
9.1.2多态的类型 250
9.1.3多态的实现方式 250
9.2运算符重载 251
9.2.1运算符重载的规则 251
9.2.2运算符重载的形式 252
9.2.3运算符重载为类的成员函数 253
9.2.4运算符重载为类的友元函数 257
9.3静态联编与动态联编 261
9.3.1静态联编 261
9.3.2动态联编 262
9.4虚函数 262
9.4.1虚成员函数 263
9.4.2虚析构函数 265
9.5抽象类与纯虚函数 267
9.5.1抽象类 267
9.5.2纯虚函数 268
小结 270
习题与练习 271
第10章 C++的输入/输出流 273
10.1流类的概念 273
10.1.1流类库 273
10.1.2 ios类 274
10.1.3 ostream类 274
10.1.4 istream类 274
10.1.5 iostream类 275
10.1.6流对象 275
10.1.7提取与插入符 275
10.2数据输入与输出流格式控制 276
10.2.1输入/输出格式控制标志 277
10.2.2用于输入/输出格式控制的成员函数 277
10.2.3输入/输出格式控制符 281
10.3其他用于输入/输出流的成员函数 284
10.3.1数据输出函数 284
10.3.2数据输入函数 285
10.3.3其他数据输入函数 287
10.4字符串流 289
10.4.1输出字符串流类的构造函数 289
10.4.2输入字符串流类的构造函数 292
10.4.3建立输入/输出字符串流对象 294
10.5 C++的文件流 294
10.5.1文件与文件流 294
10.5.2文件的打开与关闭 296
10.5.3文件流操作的其他成员函数 299
10.5.4 ASCII数据文件的操作 299
10.5.5二进制数据文件的操作 299
10.5.6二进制数据文件的随机访问 304
10.6 1/O流错误的处理 306
10.6.1检测I/O流错误的方法 307
10.6.2清除与设置I/O流的状态标志位 308
小结 308
习题与练习 309
第三篇 上机指导与习题解答 311
第11章 Visual C++ 6.0概述 311
11.1 Visual C++ 6.0的特点 311
11.2 Visual C++ 6.0开发环境 312
11.2.1 Visual C++ 6.0的安装 312
11.2.2 Visual C++ 6.0开发环境 313
11.3 Visual C++应用程序的基本概念 313
11.3.1应用程序的组成 313
11.3.2应用程序开发的要点 313
11.3.3应用程序的维护 313
11.3.4程序的动态链接及多态性 314
11.3.5应用程序开发与维护应注意的问题 315
小结 315
习题与练习 315
第12章 Visual C++使用简介 316
12.1 Visual C++的安装、启动与退出 316
12.1.1 Visual C++的安装 316
12.1.2 Visual C++的启动 316
12.1.3 Visual C++的退出 316
12.2 Visual C++ 6.0工具栏 317
12.2.1标准(Standard)工具栏 317
12.2.2编译(Build)工具栏 318
12.2.3微型编译(Build Minibus)工具栏 318
12.2.4添加对象(Atl)工具栏 318
12.2.5资源(Resource)工具栏 319
12.2.6编辑(Edit) 工具栏 319
12.2.7调试(Debug) 工具栏 320
12.2.8数据库(Database)工具栏 320
12.2.9向导(WizardBar)工具栏 321
12.3 Visual C++ 6.0菜单栏 321
12.3.1文件(File)菜单 321
12.3.2编辑(Edit)菜单 323
12.3.3查看(View)菜单 324
12.3.4插入(Insert)菜单 325
12.3.5工程(Project)菜单 325
12.3.6组件(Build)菜单 326
12.3.7调试(Debug)菜单 327
12.3.8工具(Tools)菜单 327
12.3.9窗口(Windows)菜单 328
12.3.10帮助(Help)菜单 329
12.4项目与项目工作区 330
12.5 Visual C++的资源 330
12.5.1资源编辑器 330
12.5.2对话框编辑器 331
12.5.3菜单编辑器 332
12.5.4加速键编辑器 333
12.5.5串表编辑器 333
12.5.6版本编辑器 333
12.5.7图形编辑器 333
12.5.8工具栏编辑器 333
12.6建立和编辑单文件程序 334
12.6.1建立单文件源程序的方法 334
12.6.2 C++源程序的输入与编辑 334
12.6.3打开已有的C++源程序 334
12.6.4通过已有的源程序文件建立新程序文件 334
12.7单文件程序的调试与运行 335
12.7.1程序的编译 335
12.7.2程序的调试 336
12.7.3程序的链接 336
12.7.4程序的执行 336
12.8建立和运行包含多个文件的程序 336
12.8.1建立项目工作区和项目文件 337
12.8.2只建立项目文件 338
小结 342
第13章 C++上机实验指导 343
13.1实验一:C++程序设计初步 343
13.1.1实验目的与要求 343
13.1.2用Visual C++建立程序的步骤 343
13.1.3实验内容与实验步骤 343
13.2实验二:运算符与表达式 345
13.2.1实验目的与要求 345
13.2.2实验内容与实验步骤 345
13.3实验三:简单C++程序的编辑与运行 348
13.3.1实验目的与要求 348
13.3.2实验内容 348
13.3.3实验步骤 348
13.4实验四:简单的程序结构与C++输出格式 350
13.4.1实验目的与要求 350
13.4.2实验内容 350
13.4.3实验步骤 350
13.5实验五:C++的程序控制结构 354
13.5.1实验目的与要求 354
13.5.2实验内容 354
13.5.3实验步骤 354
13.6实验六:C++的数组使用 360
13.6.1实验目的与要求 360
13.6.2实验内容 360
13.6.3实验步骤 361
13.7实验七:C++的指针使用 366
13.7.1实验目的与要求 366
13.7.2实验内容 366
13.7.3实验步骤 366
13.8 实验八:C++的枚举、结构与联合 368
13.8.1实验目的与要求 368
13.8.2实验内容 368
13.8.3实验步骤 368
13.9实验九:C++的函数 371
13.9.1实验目的与要求 371
13.9.2实验内容 371
13.9.3实验步骤 371
13.10实验十:C++的类与对象 375
13.10.1实验目的与要求 375
13.10.2实验内容 375
13.10.3实验步骤 375
13.11实验十一:C++的对象指针与对象数组 378
13.11.1实验目的与要求 378
13.11.2实验内容 378
13.11.3实验步骤 379
13.12实验十二:C++的对象与函数参数 382
13.12.1实验目的与要求 382
13.12.2实验内容 382
13.12.3实验步骤 383
13.13实验十三:C++类的继承与派生 385
13.13.1实验目的与要求 385
13.13.2实验内容 385
13.13.3实验步骤 385
13.14实验十四:C++类的多态与抽象 393
13.14.1实验目的与要求 393
13.14.2实验内容 393
13.14.3实验步骤 393
13.15实验十五:C++的流与文件 397
13.15.1实验目的与要求 397
13.15.2实验内容 397
13.15.3实验步骤 397
第14章 各章习题参考解答 400
14.1第1章习题解答 400
14.2第2章习题解答 401
14.3第3章习题解答 402
14.4第4章习题解答 406
14.5第5章习题解答 413
14.6第6章习题解答 416
14.7第7章习题解答 421
14.8第8章习题解答 424
14.9第9章习题解答 428
14.10第10章习题解答 433
14.11第11章习题解答 435
附录A ASCII代码表(十进制) 437
参考文献 438