第1章 绪论 1
1.1 结构化程序设计的特点 1
1.1.1 水平功能分解 1
1.1.2 垂直逐步分层求精 2
1.2 C++的特点 3
1.2.1 全面兼容C 3
1.2.2 强类型检查 12
1.2.3 封装 13
1.2.4 继承 14
1.2.5 软件复用 15
1.2.6 多态 16
第2章 语言基本要素 19
2.1 基本编程语句 19
2.2 运算与表达式 21
2.3 声明与定义 23
2.3.1 变量定义 23
2.3.2 变量声明 24
2.3.3 函数定义 25
2.3.4 函数声明 25
2.3.5 类声明与定义 26
第3章 指针与引用 29
3.1 值传递 29
3.1.1 赋值兼容性检查 29
3.1.2 值传递时机 31
3.2 指针 32
3.2.1 定义 32
3.2.2 值 32
3.2.3 型与值 33
3.2.4 值传递 34
3.3 多重指针 36
3.4 void*指针 36
3.4.1 定义 37
3.4.2 用途 37
3.5 函数指针 39
3.6 const修饰符 40
3.7 数组 42
3.7.1 一维数组 43
3.7.2 多维数组 45
3.7.3 数组指针 46
3.7.4 字符串常量与字符数组 47
3.7.5 越界检查 48
3.8 引用 49
3.8.1 定义 49
3.8.2 引用传递 51
3.8.3 引用的意义 54
第4章 类与对象 55
4.1 类与结构体 55
4.2 类的分析识别过程 56
4.3 访问控制符 61
4.3.1 类内/外部与授权访问 62
4.3.2 public访问属性 64
4.3.3 private访问属性 64
4.3.4 protected访问属性 65
4.4 静态变量 67
4.4.1 静态、全局、局部 67
4.4.2 类的静态成员 69
4.5 初始化与构造 70
4.5.1 变量声明、定义与初始化 70
4.5.2 单类构造 71
4.5.3 继承构造 79
4.5.4 成员初始化表 81
4.6 析构 83
4.6.1 内存区域 84
4.6.2 生命期与作用域 85
4.6.3 内存分配/销毁 85
4.6.4 单类析构 86
4.6.5 继承结构析构 90
4.6.6 组合析构 91
4.6.7 虚析构 97
第5章 多态 100
5.1 静态多态 100
5.1.1 重载 100
5.1.2 模板 101
5.2 动态多态 105
5.3 函数间关系 109
5.3.1 重载 110
5.3.2 覆盖 110
5.3.3 隐藏 111
5.4 针对抽象编程 114
第6章 类间关系 118
6.1 继承关系 118
6.1.1 IS-A的软件复用含义 118
6.1.2 继承改写子类成员访问控制符 119
6.1.3 继承带来的麻烦与问题 123
6.1.4 开闭原则 130
6.2 使用关系 132
6.2.1 关联 133
6.2.2 聚集 134
6.2.3 依赖 135
6.2.4 聚合优先于继承 136
6.3 程序依赖问题 137
6.3.1 向前引用 137
6.3.2 弱类型依赖 139
6.3.3 双向依赖 141
6.4 低耦合与高内聚 142
6.4.1 低耦合模式 142
6.4.2 高内聚模式 144
6.5 消息通信机制 145
6.5.1 同异步消息范畴 145
6.5.2 多进程间异步消息通信机制 146
6.5.3 单宿主机单进程内异步消息通信应用范畴 151
第7章 杂项 153
7.1 内存泄漏 153
7.1.1 第一类内存泄漏 153
7.1.2 第二类内存泄漏 153
7.2 运算符重载 155
7.2.1 普通运算符重载 155
7.2.2 成员运算符重载 160
7.2.3 转换构造与运算符重载 161
7.3 友元 164
7.3.1 友元函数 164
7.3.2 友元类 167
7.4 抽象类与纯抽象类 168
7.4.1 抽象类 168
7.4.2 纯抽象类 169
7.5 virtual“三虚” 171
第8章 高级面向对象思想 172
8.1 循环依赖问题 172
8.2 架构分析 172
8.3 MVC模式 177
8.3.1 模式设计目的 178
8.3.2 模式基本结构 179
8.3.3 模式的不足 180
8.4 应需而变实例 180
参考文献 184