第1章 引言 1
1.1 C++编程语言 1
1.2第一个C++程序 1
1.3 C++程序部件 3
1.3.1注释行 3
1.3.2包括库文件 3
1.3.3输入/输出:C++样式 4
1.3.4用户定义函数dsiplayFaces() 5
1.4风格问题 5
1.5 C++保留字 6
1.6 C++非面向对象特性 7
1.6.1注释行:// 7
1.6.2变量声明 7
1.6.3函数原型 7
1.6.4数据类型转换 8
1.6.5 const的新用法 9
1.6.6声明结构 12
1.6.7声明枚举类型 13
1.6.8匿名联合 13
1.7全局范围解析运算符 13
1.8复习题 15
1.9编程练习 15
第2章 输入/输出基础 17
2.1 简介 17
2.2流 17
2.2.1输出运算符:〈〈 17
2.2.2输入运算符:〉〉 18
2.2.3标准输入/输出对象 18
2.3 I/O运算符基本操作 19
2.4I/O操纵符 20
2.4.1非参数化I/O操纵符 21
2.4.2参数化I/O操纵符 22
2.5 I/O标志 23
2.6更多的I/O函数 28
2.6.1成员函数:getline() 28
2.6.2成员函数:gcount() 29
2.6.3成员函数:ignore() 30
2.6.4成员函数:get() 31
2.6.5成员函数:put() 31
2.7测试I/O操作 32
2.8复习题 33
2.9编程练习 34
3.2引用 35
3.2.1 引用别名 35
3.1 简介 35
第3章 从C到C++ 35
3.2.2利用引用进行赋值和初始化 36
3.2.3引用与函数 39
3.2.4按引用返回 41
3.2.5指针与引用 43
3.3内联函数 48
3.4重载函数 51
3.5默认变元 56
3.6动态内存管理 60
3.6.1动态内存分配:new运算符 61
3.6.2动态内存管理:delete运算符 62
3.7定义范围 64
使用名字空间 64
3.8复习题 65
3.9编程练习 66
4.1.2了解类 67
4.1.1 了解对象 67
4.1简介 67
第4章 类与对象 67
4.2 C++类与对象 68
4.2.1类定义 69
4.2.2声明类数据类型 70
4.2.3类声明段 71
4.3生成对象 73
4.4访问类成员 74
4.5对象指针 78
4.6 对象数组 82
4.7生成内联成员函数 86
4.8另一程序例子 90
4.9再谈类声明语法 93
类声明文件 94
4.10结构与类 96
4.11复习题 97
4.12编程练习 98
第5章 成员函数 99
5.1 简介 99
5.2成员函数:构造函数 99
5.2.1 另一种初始化类数据成员的方法 103
5.2.2构造函数的定时 103
5.2.3带参数的构造函数 106
5.2.4默认构造函数 108
5.2.5重载构造函数 109
5.2.6构造函数与数组 112
5.3成员函数:析构函数 115
5.4成员函数:复制构造函数 119
实现我们自己的复制构造函数 119
5.5复习题 130
5.6编程练习 130
6.2 this指针 131
第6章 再谈类 131
6.1 简介 131
6.3静态数据成员 134
声明静态数据成员 135
6.4静态成员函数 140
6.5常量成员函数 141
6.6类长度 142
6.7对象与函数 142
6.8成员函数类别 150
6.9复习题 151
6.10编程练习 152
第7章 友元函数 153
7.1 简介 153
7.2友元函数 153
7.3具有相同友元的两个类 156
7.4友元成员函数 160
7.5友元类 164
7.6复习题 164
7.7编程练习 164
第8章 重载运算符 166
8.1简介 166
8.2重载运算符 166
8.3运算符函数 167
8.4使用重载运算符的规则 168
8.5更多的运算符函数 169
8.5.1重载一元运算符:operator++() 169
8.5.2第2次重载递增运算符 171
8.6无名临时对象 173
第3次重载递增运算符 173
8.7重载++后缀符号:运算符++(int) 174
8.8.1重载逻辑运算符:operator=() 179
8.8重载二元运算符 179
8.8.2重载赋值运算符:operator=() 183
8.9把运算符函数作为友元函数 190
重载小于运算符:operator〈() 191
8.10重载特殊运算符 192
8.10.1重载下标运算符:operator[]() 192
8.10.2重载函数调用运算符:operator()() 196
8.11重载New与Delete运算符:运算符new()与运算符delete() 199
对数组重载new()与delete()运算符 202
8.12复习题 205
8.13编程练习 205
第9章 重载输入/输出运算符 207
9.1简介 207
9.2输入/输出库 207
9.3.1重载插入运算符函数:〈〈() 208
9.3输入/输出运算符 208
9.3.2重载取出运算符函数:〉〉() 210
9.4复习题 215
9.5编程练习 216
第10章 继承 217
10.1简介 217
10.2基类与派生类 217
声明派生类对象 223
10.3再谈访问指定符 225
10.4类访问指定符 229
10.5复习题 237
10.6编程练习 237
第11章 继承与虚函数 239
11.1 简介 239
11.2多态继承 240
11.3 多层继承 246
11.4多态 251
早关联与迟关联 252
11.5虚函数 252
11.6虚析构函数 259
11.7纯虚函数 262
抽象类 265
11.8复习题 267
11.9编程练习 268
第12章 模板 270
12.1 简介 270
12.2函数模板 270
12.2.1生成函数模板 270
12.2.2多类型的模板 274
12.3类模板 277
生成类模板 281
12.4窗口类 285
12.5复习题 290
12.6编程练习 290
第13章 异常处理 292
13.1简介 292
13.2分配/再分配内存空间 292
13.2.1 构造函数/析构函数和new/delete运算符 295
13.2.2处理动态内存分配错误 298
13.3错误处理 298
错误条件 298
13.4异常处理 299
13.4.1 throw关键字 299
13.4.2 try关键字 301
13.4.3 Catch关键字 302
13.4.4异常指定 306
13.5抛出用户定义对象 307
13.6构造函数异常 311
使用set_new_handler()函数 312
13.7复习题 315
13.8编程练习 315
第14章 文件输入与输出 316
14.1简介 316
14.2 I/O类层次 316
14.3文件输出操作 317
14.3.1生成文件对象 317
14.3.2打开文件进行输出 317
14.3.3用构造函数打开文件 318
14.3.4写入文件 318
14.3.5关闭文件 318
14.3.6用析构函数关闭文件 318
14.4.1打开文件进行输入 320
14.4文件输入操作 320
14.4.2用构造函数打开文件进行输入 321
14.4.3读取文件 321
14.4.4关闭文件 321
14.4.5用析构函数关闭文件 322
14.5文件方式指定符 324
14.6文件I/O成功 325
14.7二进制I/O 326
14.7.1更多的文件读/写成员函数 327
14.7.2更多的get()函数 331
14.8探测文件结尾 331
成员函数:getline() 332
14.9对象与文件输入/输出 335
14.9.1成员函数:write() 335
14.9.2成员函数:read() 335
14.10随机访问 340
14.11复习题 344
14.12编程练习 345
第15章 运用知识 346
15.1 例子程序 346
15.2 要求 346
15.3初步设计 346
15.4代码 348
头文件 349
附录A 面向对象编程 359
A.1 简介 359
A.2 过程性语言 359
A.3 面向对象编程 360
B.2 程序 362
B.3 编程机制 362
B.1 程序开发 362
附录B 程序生成机制 362
附录C 错误、测试与调试 365
C.1 简介 365
C.2 错误类型 365
C.2.1 语法/语义错误 365
C.2.2 链接错误 367
C.3 探测运行错误 368
C.2.3 运行错误 368
C.4 纠正运行错误 369
C.5 预防错误 369
C.5.1 防卫性编程 369
C.5.2 条件编译 370
附录D 运算符表 372
D.1 运算符优先顺序与结合律 372
D.2 运算符重载 373
附录E ASCII表 376