第1章 C++基础知识 1
1.1 面向对象程序设计语言 1
1.1.1 从C到C++ 1
1.1.2 Java 1
1.2 面向对象程序设计的基本概念 2
1.2.1 类 3
1.2.2 对象 3
1.2.3 封装 3
1.2.4 继承 3
1.2.5 多态性 4
1.3 面向对象软件的开发步骤 4
1.4 C++程序开发过程 5
1.5 UML类图 6
1.6 一个简单的C++程序 9
1.7 小结 12
习题 13
第2章 类与对象 15
2.1 类与对象的定义 15
2.1.1 类的定义 15
2.1.2 成员函数的定义 17
2.1.3 类成员的访问控制 18
2.1.4 对象的定义 19
2.1.5 对象的作用域和生存期 22
2.2 构造函数和析构函数 24
2.2.1 用于初始化的构造函数 24
2.2.2 默认构造函数 28
2.2.3 拷贝构造函数 29
2.2.4 析构函数 35
2.3 this指针 36
2.4 静态成员 39
2.4.1 静态数据成员 39
2.4.2 静态成员函数 40
2.5 常成员 42
2.5.1 常对象 42
2.5.2 常数据成员 43
2.5.3 常成员函数 44
2.6 类的组合 45
2.7 友元函数和友元类 50
2.8 动态内存分配 52
2.8.1 new和delete 52
2.8.2 深拷贝与浅拷贝 54
2.9 应用实例——计数器 56
2.10 小结 61
习题 61
第3章 继承与派生 64
3.1 基类和派生类 64
3.1.1 为何需要继承 64
3.1.2 派生类声明 66
3.2 派生类的访问控制 68
3.2.1 公有继承 68
3.2.2 私有继承 70
3.2.3 保护继承 71
3.3 派生类的构造函数和析构函数 72
3.3.1 派生类构造函数和析构函数的执行顺序 73
3.3.2 派生类构造函数和析构函数的构造规则 74
3.4 多继承 80
3.4.1 多继承的声明 80
3.4.2 多继承的构造函数和析构函数 80
3.4.3 二义性 84
3.4.4 虚基类 85
3.5 赋值兼容规则 87
3.6 应用实例——小型诊所的简单信息管理程序 89
3.7 小结 93
习题 93
第4章 多态性 97
4.1 多态性概述 97
4.1.1 多态的分类 97
4.1.2 多态的实现 97
4.2 虚函数 97
4.2.1 静态联编和动态联编 98
4.2.2 虚函数的作用和定义 98
4.2.3 虚函数的使用原则 99
4.2.4 虚函数的访问 99
4.3 纯虚函数与抽象类 100
4.4 函数重载 101
4.5 运算符重载 103
4.5.1 运算符重载的规则 104
4.5.2 运算符重载为成员函数 104
4.5.3 运算符重载为友元函数 105
4.5.4 其他运算符重载 106
4.6 应用实例 112
4.7 小结 115
习题 115
第5章 独立编译与命名空间 118
5.1 独立编译 118
5.1.1 C++程序的组织结构 118
5.1.2 编译预处理 126
5.2 命名空间 130
5.2.1 命名空间和using预编译指令 130
5.2.2 创建命名空间 131
5.2.3 无名命名空间 133
5.3 小结 137
习题 137
第6章 模板 139
6.1 模板的概念 139
6.2 函数模板 140
6.2.1 函数模板的定义 140
6.2.2 函数模板的实例化 141
6.3 类模板 144
6.3.1 类模板的定义 144
6.3.2 类模板的实例化 146
6.3.3 类模板的默认参数 147
6.4 标准模板库STL 148
6.5 应用实例 150
6.6 小结 152
习题 152
第7章 输入和输出流类库 154
7.1 输入/输出流概念和流类库结构 154
7.2 无格式输入/输出 155
7.2.1 输出运算符“〈〈” 155
7.2.2 输入运算符“〉〉” 156
7.2.3 成员函数put()输出字符 158
7.2.4 成员函数get()和getline() 158
7.2.5 成员函数read()和write() 160
7.3 格式化输入/输出 161
7.3.1 使用ios类成员函数 161
7.3.2 使用操纵符 166
7.4 文件流操作 168
7.4.1 文件打开与关闭 168
7.4.2 文件读写 170
7.5 应用实例 177
7.6 小结 180
习题 180
第8章 string类 182
8.1 string类对象定义 182
8.1.1 char型字符串 182
8.1.2 string型字符串定义 182
8.1.3 string类构造函数 183
8.2 string类成员函数 184
8.3 string类操作符 186
8.4 应用实例 191
8.5 小结 193
习题 193
第9章 异常处理 195
9.1 异常处理基础 195
9.2 异常处理编程技术 196
9.2.1 异常处理的基本思想 196
9.2.2 异常处理的实现 197
9.2.3 异常处理规则 198
9.2.4 异常事件的多路捕获 199
9.2.5 异常处理中的构造与析构 201
9.2.6 异常处理核心技术——栈展开 203
9.3 应用实例 203
9.4 小结 205
习题 205
附录A 实验指导 207
附录B C++语言中的关键字 264
参考文献 265