第1章 C++编程简介 1
1.1 面向对象的方法 1
1.1.1 面向对象编程 1
1.1.2 面向对象方法的由来 1
1.1.3 面向对象的语言 2
1.2 面向对象的基本概念 3
1.2.1 类和对象 3
1.2.2 面向对象的特点 3
1.3 C和C++的关系 4
1.4 C++程序的编写和实现 7
1.4.1 用C++语言编写程序 7
1.4.2 对源程序进行编译 7
1.4.3 对目标文件进行链接 8
1.4.4 运行程序 8
1.4.5 分析运行结果 8
1.5 如何用Visual Studio 2010编写C++程序 8
1.5.1 Visual Studio 2010编程环境 8
1.5.2 Visual Studio 2010的启动 9
1.5.3 新建一个C++项目 9
1.5.4 Visual Studio 2010界面介绍 9
综合实例 13
本章小结 14
习题 14
第2章 C++语言的基础知识 16
2.1 标识符与关键字 16
2.1.1 标识符 16
2.1.2 关键字 16
2.2 常量与变量 17
2.2.1 常量 17
2.2.2 变量 18
2.3 运算符与表达式 18
2.3.1 算术运算符 19
2.3.2 关系运算符 20
2.3.3 逻辑运算符 20
2.3.4 条件运算符 20
2.3.5 位运算符 21
2.4 语句及其流程控制 21
2.4.1 语句 21
2.4.2 if…else选择结构 21
2.4.3 switch选择结构 23
2.4.4 while语句 24
2.4.5 do…while语句 26
2.4.6 for循环结构 27
2.4.7 程序中止函数exit() 28
2.5 函数 29
2.5.1 函数的结构和函数的定义 29
2.5.2 函数名重载 30
2.5.3 递归函数 31
2.5.4 C++库函数 33
2.6 构造数据类型 34
2.6.1 数组 34
2.6.2 一维数组 34
2.6.3 多维数组 38
2.7 指针 39
2.7.1 指针类型与指针的声明 39
2.7.2 指针变量的引用 40
2.7.3 指向指针的指针 40
2.7.4 指针的运算 42
2.8 数组与指针的关系 43
2.8.1 一维数组指针的表示法 43
2.8.2 二维数组指针的表示法 43
2.8.3 指针与字符串 44
2.8.4 指针数组 46
2.8.5 指针与函数 47
2.8.6 数组指针作为函数参数 48
2.8.7 指向函数的指针 49
2.8.8 返回指针的函数 51
2.8.9 main函数中的参数 52
2.9 结构体、共用体和枚举数据类型 52
2.9.1 结构体类型概述 52
2.9.2 结构体类型变量的定义和引用 53
2.9.3 结构体数组 55
2.9.4 结构体型函数参数以及返回结构体类型值的函数 58
2.9.5 结构体变量和指针 60
2.9.6 枚举类型数据 65
2.9.7 用typedef定义类型 67
综合实例 67
本章小结 70
习题 71
第3章 C++在非面向对象方面的常用新特性 73
3.1 C++的输入与输出简介 74
3.1.1 用cout输出数据流 74
3.1.2 用cin输入数据流 74
3.2 用const定义常量 76
3.3 函数的重载 78
3.4 有默认参数的函数 80
3.5 引用 81
3.5.1 引用的概念 82
3.5.2 将引用作为函数的参数 83
3.5.3 引用和指针的区别 85
3.5.4 常指针与常引用 85
3.5.5 引用小结 88
3.6 动态分配内存 88
3.6.1 new关键字 88
3.6.2 delete运算符 89
3.7 布尔类型 91
3.8 函数原型 92
3.9 作用域运算符 94
3.10 内置函数 95
3.11 C++的注释 97
综合实例 98
本章小结 101
习题 102
第4章 类和对象 104
4.1 面向对象的概念 104
4.1.1 概述 104
4.1.2 面向对象程序设计 105
4.1.3 类和对象简介 106
4.1.4 封装性 107
4.1.5 抽象 107
4.1.6 继承性 108
4.1.7 多态性 108
4.1.8 面向对象程序设计的特点 109
4.1.9 面向对象的软件工程 109
4.2 类 110
4.2.1 类和对象的关系 110
4.2.2 类的定义 111
4.2.3 类和结构体的区别 114
4.3 对象的创建 115
4.4 类的成员函数 121
4.4.1 成员函数的特性 121
4.4.2 内部函数 122
4.4.3 在类外定义成员函数 124
4.4.4 成员函数的存储方式 125
4.5 对象成员的引用 126
4.5.1 通过对象名和成员运算访问对象中的成员 126
4.5.2 通过对象的引用变量访问对象中的成员 127
4.6 构造函数 127
4.6.1 对象的初始化 127
4.6.2 构造函数的作用 129
4.6.3 构造函数的种类 132
4.6.4 用参数初始化表对数据成员初始化 136
4.6.5 构造函数的重载 136
4.6.6 使用默认参数的构造函数 137
4.7 析构函数 139
4.8 对象数组 143
4.8.1 对象数组的定义 143
4.8.2 对象数组的初始化 145
4.9 对象指针 146
4.9.1 指向对象的指针 146
4.9.2 指向对象成员的指针 148
4.9.3 this指针 152
4.10 对象成员 153
4.11 对象创建时内存的动态分配 156
综合实例 159
本章小结 162
习题 163
第5章 关于类和对象的进一步讨论 167
5.1 类的封装性 167
5.1.1 公用接口与私有实现的分离 167
5.1.2 类声明和成员函数定义的分离 168
5.2 作用域和可见性 170
5.2.1 标识符的作用域 170
5.2.2 可见性 174
5.2.3 程序实体的生存期 175
5.2.4 C++的存储属性 175
5.3 类的静态成员 177
5.3.1 类静态成员 177
5.3.2 类静态成员函数 179
5.4 友元 181
5.4.1 友元函数 181
5.4.2 友元类 184
5.5 类模板的基本概念 186
5.6 结构体和类 187
5.7 联合体和类 188
5.8 共享数据的保护 190
5.8.1 常对象 190
5.8.2 用const修饰的类成员 191
5.8.3 常引用 193
5.8.4 指向对象的常指针 195
5.8.5 指向常对象的指针变量 195
5.9 类模板的进一步讨论 196
综合实例 200
本章小结 201
习题 201
第6章 运算符的重载 205
6.1 运算符重载的一般概念 205
6.2 重载运算符的实现 210
6.2.1 重载为类的成员函数 210
6.2.2 重载为类的友元函数 213
6.3 单目运算符重载 214
6.4 双目运算符重载 217
6.5 特殊运算符重载 220
6.5.1 赋值运算符重载 220
6.5.2 下标运算符重载 223
6.5.3 比较运算符重载 223
6.5.4 new和delete运算符重载 225
6.5.5 逗号运算符重载 227
6.5.6 类型转换运算符重载 228
6.5.7 ->运算符重载 234
6.5.8 函数调用运算符重载 235
6.5.9 I/O运算符重载 236
综合实例 237
本章小结 240
习题 240
第7章 类的继承与派生 241
7.1 继承与派生的概念 241
7.2 单继承 243
7.2.1 单继承和派生 243
7.2.2 重名成员 249
7.3 继承中的构造函数与析构函数 254
7.3.1 继承中的构造函数 254
7.3.2 析构函数 262
7.4 多继承与虚基类 263
7.4.1 多继承 264
7.4.2 多继承中的二义性和支配原则 267
7.4.3 虚基类 269
综合实例 272
本章小结 274
习题 274
第8章 多态性和虚函数 276
8.1 C++多态的概念 276
8.1.1 多态概念的引入 277
8.1.2 构成多态的条件 279
8.2 虚函数 281
8.3 虚析构函数 284
8.4 纯虚函数和抽象类 286
综合实例 289
本章小结 296
习题 296
第9章 模板、字符串和异常 298
9.1 C++函数模板 298
9.2 模板类 301
9.2.1 模板类的定义 301
9.2.2 模板类的实例化 302
9.3 C++模板中的函数式参数 304
9.4 C++中的string类和字符串 306
9.4.1 string类的定义 306
9.4.2 转换为char数组字符串 307
9.4.3 string字符串的输入与输出 307
9.5 C++中string字符串的访问和拼接 308
9.5.1 访问字符串中的字符 308
9.5.2 字符串的拼接 308
9.6 C++中string字符串的增、删、改、查 309
9.6.1 插入字符串 309
9.6.2 删除字符串 310
9.6.3 提取子字符串 311
9.6.4 字符串的查找 311
9.7 C++异常处理 313
9.7.1 C++的异常引入 313
9.7.2 捕获异常 314
9.7.3 异常的类型 315
9.8 用throw抛出异常 317
9.8.1 throw关键字 317
9.8.2 不被建议的用法 319
9.9 C++中的exception类 320
综合实例 322
本章小结 324
习题 324
第10章 C++的输入与输出 327
10.1 C++输入与输出的概念 327
10.1.1 输入与输出 327
10.1.2 C++的I/O相对于C的发展 328
10.2 与C++输入和输出有关的类和对象 329
10.2.1 输入输出流类的概念 329
10.2.2 与iostream类库有关的头文件 330
10.2.3 在iostream头文件中定义的流对象 331
10.2.4 在iostream头文件中重载运算符 331
10.3 C++标准输出流详解 332
10.3.1 cout流对象 332
10.3.2 cerr流对象 333
10.3.3 clog流对象 334
10.4 C++格式化输出 334
10.4.1 用控制符控制输出格式 335
10.4.2 用流对象的成员函数控制输出格式 336
10.5 用C++流成员函数put输出单个字符 339
10.6 cin输入流详解 341
10.7 用get()函数读入一个字符 342
10.7.1 不带参数的get函数 342
10.7.2 有一个参数的get函数 343
10.7.3 有三个参数的get函数 344
10.8 用getline()函数读入一行字符 345
10.9 一些与输入有关的istream类成员函数 347
10.9.1 eof函数 347
10.9.2 peek函数 347
10.9.3 putback函数 347
10.9.4 ignore函数 348
10.10 C++中文件的概念 350
10.11 C++中的文件流类与文件流对象 351
10.12 文件的打开与关闭 352
10.12.1 打开文件 352
10.12.2 关闭磁盘文件 354
10.13 对ASCII文件的读写操作 354
10.14 对二进制文件的读写操作 359
10.14.1 用成员函数read和write读写二进制文件 360
10.14.2 与文件指针有关的流成员函数 362
10.14.3 随机访问二进制数据文件 363
10.15 对字符串流的读写操作 365
10.15.1 建立输出字符串流对象 366
10.15.2 建立输入字符串流对象 366
10.15.3 建立输入输出字符串流对象 367
综合实例 370
本章小结 372
习题 372