第1章 C++简史 1
1.1 C++的历史背景 1
1.2 C++大事记 5
1.2.1 1979年:C with classes诞生 5
1.2.2 1983年8月:C++正式命名 6
1.2.3 1986年:《The C++ Programming Language》出版 7
1.2.4 1987年:C++2.0发布 7
1.2.5 1990年:《The Annotated C++ Reference Manual》出版 8
1.2.6 1994年:STL诞生 8
1.2.7 1998年:ISO C++正式通过 9
1.2.8 2011年:C++11颁布 9
1.3 C++的进化和改进理念 10
1.4 C++的历史贡献及未来 11
第2章 程序设计语言的语义 14
2.1 哲学基础 14
2.2 语义的形式化描述 14
2.3 操作性语义 16
2.4 语义描述涉及的主要元素 17
第3章 C++类型系统 19
3.1 类型系统简介 19
3.2 数据类型的表达规则 21
3.2.1 基本数据类型的表达规则 22
3.2.2 用户自定义类型的表达规则 23
3.3 类型实例的构造规则 25
3.3.1 类型和类型实例 25
3.3.2 类型实例的构造和析构 27
3.4 类型的操作规则 33
3.4.1 context 33
3.4.2 函数 34
3.4.3 过程 35
3.4.4 过程函数 35
3.4.5 方法 36
3.4.6 特别讨论:过程方法的自动机诠释 37
3.4.7 运算符 38
3.5 C++类型系统的特征 39
3.5.1 特征1:支持OOP 39
3.5.2 特征2:强静态类型 40
3.5.3 特征3:UDT是一等公民 41
3.5.4 特征4:类型清除 45
3.5.5 特征5:支持模板 49
3.5.6 特征6:指针和REF 53
3.5.7 特征7:类型修正符 60
3.6 其他(非C++)类型系统 62
3.7 类型系统的意义和用途 62
3.7.1 程序的精确性保障 62
3.7.2 性能的可保障性 64
第4章 C++变量语义 66
4.1 变量简介 66
4.2 C++变量的属性 68
4.2.1 C++变量的存储属性 68
4.2.2 C++变量的值语义 95
4.2.3 C++变量的自洽性 105
4.2.4 C++变量的总分性 108
4.2.5 C++变量的多态性 112
4.3 临时变量 113
第5章 C++对OOP的支持 116
5.1 object的内存布局 117
5.2 继承 119
5.2.1 继承object的内存布局 123
5.2.2 多继承 128
5.2.3 继承类object的语义规则 130
5.3 多态类和多态变量 137
5.4 C++对抽象的支持 139
第6章 C++性能分析 141
6.1 性能分析原理 141
6.2 算法的重要性 149
6.3 RAM内存读取的性能 153
6.3.1 单线程heap管理器 154
6.3.2 定制化heap管理系统 157
6.4 关于缓存 164
6.5 关于I/O 175
6.6 C++的特殊性能问题 176
6.6.1 临时变量的性能问题 176
6.6.2 STL容器 180
6.6.3 Type Erasure 185
6.6.4 异常处理 187
6.6.5 继承的性能问题 194
6.6.6 直接函数、间接函数、内联函数 200
参考文献 204