第1部分 面向过程程序设计 3
第1章 C++语言基础 3
1.1引言 3
1.2编写C++程序 3
1.3常量 5
1.4变量 11
1.5数据类型 18
1.6运算符和表达式 20
本章小结 29
思考题 30
练习题 30
第2章 程序控制结构 32
2.1顺序结构 32
2.2分支结构 33
2.2.1 if条件语句 34
2.2.2 switch分支语句 43
2.3循环结构 48
2.3.1 while循环结构 48
2.3.2 do-while循环结构 51
2.3.3 for循环结构 54
2.3.4嵌套循环 57
2.3.5控制循环结构 60
2.4综合例子 65
本章小结 77
思考题 79
练习题 79
第3章 函数 80
3.1函数概述 80
3.2函数的定义 83
3.2.1函数定义的形式 83
3.2.2定义与声明 84
3.3返回语句 85
3.4函数参数 85
3.5函数的调用 86
3.5.1函数的调用方式 87
3.5.2嵌套调用 89
3.5.3递归调用 89
3.6局部变量和全局变量 92
3.6.1局部变量 92
3.6.2全局变量 93
3.7内部函数和外部函数 96
3.7.1内部函数 96
3.7.2外部函数 97
3.8综合例子 98
本章 小结 104
思考题 104
练习题 105
第4章 数组 106
4.1一维数组 106
4.1.1一维数组的定义 106
4.1.2一维数组的初始化 107
4.1.3一维数组元素的使用 108
4.1.4数组元素的排序处理 109
4.2二维数组 115
4.2.1二维数组的定义与使用 115
4.2.2二维数组的初始化 116
4.2.3二维数组元素的使用 116
4.3字符数组与字符串 118
4.3.1字符数组的定义及初始化 118
4.3.2字符串 119
4.3.3字符串的输入与输出 120
4.3.4常用字符串处理函数 121
4.3.5 string字符串类型 123
4.4数组名作为函数参数 127
本章小结 129
思考题 130
练习题 130
第5章 构造数据类型 132
5.1结构体数据类型 132
5.1.1结构体概念 132
5.1.2结构体声明 132
5.1.3结构体类型变量的定义方法 134
5.1.4结构体变量的初始化 135
5.1.5结构体变量的使用 136
5.1.6结构体数组 138
5.2共用体数据类型 140
5.2.1共用体类型的声明 140
5.2.2共用体类型的举例 140
5.3枚举数据类型 142
5.3.1枚举概念 142
5.3.2枚举类型的声明 142
5.3.3枚举举例 142
5.4 typedef声明新的类型名 144
本章小结 145
思考题 145
练习题 145
第6章 指针和引用 147
6.1指针概念和指针变量 147
6.1.1指针概念 147
6.1.2指针变量 149
6.2使用指针作函数参数 151
6.3引用 155
6.3.1什么是变量的“引用” 155
6.3.2“引用”作为函数参数 155
6.4数组与指针 156
6.4.1指向数组元素的指针 156
6.4.2用指针变量作为函数参数 157
6.4.3字符串与指针 159
6.5指针函数 160
6.6指针数组及指向指针的指针 161
6.6.1指针数组 161
6.6.2指向指针的指针 162
6.7指向函数的指针 163
6.8用结构体类型的指针变量和引用作为函数参数 164
6.8.1指向结构体变量的指针 164
6.8.2应用举例 165
6.9链表结构 165
6.9.1链表的基本概念 165
6.9.2使用new和delete运算符进行动态分配和撤销存储空间 166
6.9.3链表举例 167
本章小结 175
思考题 175
练习题 176
第2部分 面向对象程序设计 179
第7章 类和对象 179
7.1从面向过程到面向对象 179
7.2什么是类,什么是对象,对象和类之间的关系 180
7.3类的声明和对象的创建(定义) 184
7.4类的成员变量和成员函数 185
7.5类的信息隐藏机制及面向对象设计中的几个名词 187
7.6成员选择符和对象的动态创建(定义) 189
7.7类class和结构体struct区别 191
7.8通过引用来传递和返回类对象 193
7.9构造函数 196
7.10参数初始化表 200
7.11析构函数 200
7.12常量指针this 203
7.13类与new和delete操作符 204
7.14类与static关键字 206
7.15友元函数和友元类 208
本章小结 213
思考题 214
练习题 214
第8章 继承和组合 216
8.1继承的概念及语法 216
8.2继承方式 218
8.3改变基类成员在派生类中的访问属性 220
8.4名字隐藏 221
8.5间接继承 222
8.6继承机制下的构造函数 224
8.7派生类构造函数调用规则 228
8.8继承机制下的析构函数 230
8.9多继承 231
8.10虚基类 234
8.11组合 236
本章小结 239
思考题 240
练习题 240
第9章 多态和虚函数 242
9.1基类指针 243
9.2多态前提条件 243
9.3虚成员函数 246
9.4虚成员函数表vtable 249
9.5虚析构函数 250
9.6静态成员函数不能声明为虚函数 253
9.7重载、覆盖和遮蔽 253
9.8抽象基类和纯虚成员函数 259
9.9应用实例 261
本章小结 269
思考题 269
练习题 269
第10章 运算符重载 273
10.1运算符重载方法 273
10.2运算符重载的规则 275
10.3运算符函数 277
10.3.1重载为类的成员函数 277
10.3.2重载为类的友员函数 278
10.4双目运算符的重载 282
10.5单目运算符的重载 286
10.6重载流插入运算符和流提取运算符 288
10.6.1重载流插入运算符“<<” 289
10.6.2重载流提取运算符“>>” 291
10.7不同类型数据间的转换 293
10.7.1 C++标准类型数据间的转换 293
10.7.2转换构造函数(由数所转换成类的对象) 293
10.7.3类型转换函数(类的对象转换为一个其他类型的数据) 295
本章小结 298
思考题 299
练习题 299
第11章 输入/输出流 300
11.1文件、流及C++的流类库 300
11.1.1流类库的优点 300
11.1.2文件与流的概念 301
11.1.3输入/输出的含义 301
11.1.4 C++的流类库 302
11.2 C++输入/输出的格式控制 303
11.2.1输入/输出格式控制符 303
11.2.2流操作子 306
11.2.3 C++标准设备的输入/输出(cin、cout、cerr、clog、>>和<<) 308
11.3磁盘文件的输入和输出 312
11.3.1文件的打开与关闭 312
11.3.2使用插入与提取算符对磁盘文件进行读写 314
11.3.3使用类成员函数对文件流(类对象)进行操作 316
11.4 text文件与binary文件 320
11.4.1按用户设置的文件形式进行读写 320
11.4.2对数据文件进行随机访问 323
11.5字符串流 325
本章小结 328
思考题 328
练习题 328
第12章 C++的异常处理 330
12.1异常处理方法 330
12.1.1异常处理机制 330
12.1.2编程规则 333
12.2异常处理的接口声明 337
12.3异常处理需注意问题 337
12.4 C++异常传递的方法 338
12.4.1传值 338
12.4.2传指针 339
12.4.3引用传递 340
本章小结 340
思考题 341
练习题 341
第3部分 附录 345
附录A 编码风格和准则及算法表示方法 345
A.1编码风格和准则 345
A.2算法表示方法及解题步骤 345
A.3 C++程序中全局变量的声明及函数声明与调用 349
A.4一个C++程序由多个文件组成 350
附录B C++常用库函数 352
B.1常用数学函数表 352
B.2常用字符串处理函数表 352
B.3其他常用函数表 353
B.4输入/输出的成员函数表 354
附录C 编程环境安装和调试 355
C.1 Visual C++2010 Express安装 355
C.2 Visual C++2010 Express注册 357
C.3 Visual C++2010 Express使用和程序调试 359
附录D 运算符优先级表及ASCII码表 365
D.1运算符优先级表 365
D.2 ASCII码表 366
参考文献 370