第一部分 基础知识 2
第1章 引言 2
1.1 面向对象编程 2
1.2 为什么选择C++ 3
1.3 关于C++ 3
1.4 程序设计 4
1.5 组织结构 5
1.6 源代码 5
1.7 联系作者 6
1.8 注释与说明 6
1.9 练习 7
2.1 第一个程序 8
第2章 FORTRAN基础 8
2.2 变量、对象和数据类型 11
2.3 C++的基本类型和运算 13
2.4 输入和输出 17
2.5 运算符的优先级和结合规则 19
2.6 if语句 20
2.7 循环 22
2.8 声明 24
2.9 数组 26
2.10 指针 27
2.11 指针和数组 28
2.12 常量指针和指向常量的指针 30
2.13 运行时数组的大小 30
2.14 字符串 32
2.15 引用 33
2.16 函数 34
2.17 注释与说明 40
2.18 练习 41
第3章 C语言基础 44
3.1 第一个程序 44
3.2 变量、对象和类型 45
3.3 C++的内置类型和操作 46
3.4 运算符的优先级和结合规则 47
3.5 输入和输出 47
3.6 声明 49
3.7 指针 50
3.8 内存管理 51
3.9 引用 51
3.10 函数 52
3.11 注释与说明 55
3.12 练习 55
第4章 类 56
4.1 两个简单的类 56
4.2 数组类 62
4.3 类模板 66
4.4 函数模板 69
4.5 异常 70
4.6 嵌套类 73
4.7 C++程序概述 75
4.8 注释与说明 76
4.9 练习 77
5.1 声明和定义 79
第5章 函数 79
5.2 函数声明 80
5.3 函数参数 82
5.4 函数返回值类型 87
5.5 重载函数 88
5.6 函数模板 90
5.7 注释与说明 92
5.8 练习 93
第6章 函数和类 95
6.1 成员函数和重载 95
6.2 初始化 96
6.3 复制 98
6.4 转换 100
6.5 运算符函数 106
6.6 赋值 108
6.7 特殊运算符 109
6.8 析构 110
6.9 静态成员函数 110
6.10 友元函数 111
6.11 类的输入/输出运算符 114
6.12 注释与说明 115
6.13 练习 115
第7章 对象生存期与内存管理 117
7.1 对象的生存周期 117
7.2 对象生存期 118
7.3 静态对象 119
7.4 自动对象 123
7.5 动态对象 125
7.6 避免悬空引用和垃圾 127
7.7 注释与说明 130
7.8 练习 131
第8章 示例程序 133
8.1 问题:表示网状结构 133
8.2 方案一:数组 135
8.3 抽象和封装 137
8.4 方案二:引进类 138
8.5 方案三:信息隐藏 141
8.6 注释与说明 145
8.7 练习 146
9.1 示例:仪表控制 150
第二部分 共性的描述 150
第9章 公共行为表述 150
9.2 类和对象 151
9.3 接口与接口类型 154
9.4 对象和类的图形描述 158
9.5 对象的创建以及接口的使用 160
9.6 接口基类 161
9.7 复合接口 162
9.8 作为组件的接口 164
9.9 创建并利用接口数组 167
9.10 异常和接口 171
9.11 小结 173
9.12 注释与说明 173
9.13 练习 175
10.1 利用公用继承扩展 177
第10章 公共数据实现表述 177
10.2 利用公用继承的接口类扩展 180
10.3 公用继承存在的问题 183
10.4 成员函数前推 185
10.5 用于实现的私有继承 187
10.6 继承机制 190
10.7 基类合成 196
10.8 类声明的作用 198
10.9 小结 199
10.10 注释与说明 200
10.11 练习 201
11.1 由模板表述的公共性 202
第11章 通用结构描述 202
11.2 模板与继承 204
11.3 示例:数组类 207
11.4 接口数组类 208
11.5 全局函数模板 216
11.6 小结 217
11.7 注释与说明 217
11.8 练习 218
第12章 类型 219
12.1 类型的基本概念 219
12.2 类型和接口 222
12.3 类型转换 225
12.4 类型信息的丢失 226
12.5 类型和类模板 230
12.6 受限的模板扩展 233
12.7 函数结构种类 235
12.8 小结 236
12.9 注释与说明 237
12.10 练习 238
第三部分 技术应用 242
第13章 数组 242
13.1 使用具体数组 242
13.2 具体数组 245
13.3 具体数组引用 253
13.4 具体数组投影 259
13.5 接口数组 264
13.6 接口数组的投影 269
13.7 迭代器 271
13.8 小结 276
13.9 注释与说明 276
13.10 练习 277
第14章 指针类 279
14.1 指针的使用 279
14.2 引用聚集 280
14.3 程序员定义的指针类 282
14.4 对象复制指针 283
14.5 对象计数指针 286
14.6 使用对象计数指针 290
14.7 接口指针类 293
14.9 注释与说明 296
14.8 小结 296
14.10 练习 297
第15章 类的代码结构 299
15.1 LAPACK的结构 299
15.2 数据和函数的封装 301
15.3 运行时失败的不确定类型 304
15.4 公共结构的表示 307
15.5 小结 310
15.6 注释与说明 311
15.7 练习 311
第16章 代数结构类别 313
16.1 代数结构 313
16.2 示例:复数浮点型 315
16.3 一个集合、单目运算的结构类别 318
16.4 两个集合的结构类别 326
16.5 示例:量纲分析 327
16.6 示例:数组的运算 331
16.7 小结 334
16.8 注释与说明 335
16.9 练习 335
第17章 函数对象 339
17.1 函数指针 339
17.2 成员函数指针 340
17.3 函数对象 341
17.4 函数接口类别 342
17.5 延迟求值的函数对象 344
17.6 示例:一个简单的函数求值器 349
17.7 集合函数 354
17.8 小结 355
17.9 注释与说明 355
17.10 练习 356
第18章 重用已有库 358
18.1 C程序的运行 358
18.2 示例:String类 360
18.3 FORTRAN程序的运行 367
18.4 开发在FORTRAN包装程序中的命名共性 369
18.5 压缩数组的表示 371
18.6 用BLAS实现矩阵 373
18.7 LAPACK奇异值分解 378
18.8 小结 383
18.9 注释与说明 384
18.10 练习 385
第19章 C++数据建模 387
19.1 介绍 387
19.2 用于试验数据的类 387
19.3 线性化的非线性方程类 389
19.4 自动派生类 391
19.5 示例:非线性方程的迭代解决方案 394
19.6 用于阻尼SDV方程的类 400
19.7 main()程序 405
19.8 小结 407
19.9 注释与说明 407
19.10 练习 408
参考文献 410