第1章 面向对象和类 1
1.1 面向对象程序设计 1
1.1.1 什么是面向对象程序设计 1
1.1.2 为什么要用面向对象程序设计 4
1.2 类和对象 5
1.2.1 类的声明 5
1.2.2 类的成员函数 6
1.2.3 内联成员函数 7
1.2.4 定义对象的方法 9
1.2.5 类和对象的简单应用 10
1.3 构造函数和析构函数 12
1.3.1 构造函数 12
1.3.2 构造函数的重载 14
1.3.3 默认构造函数 15
1.3.4 复制构造函数 16
1.3.5 用构造函数对类和对象初始化 18
1.3.6 对象数组 21
1.3.7 对象的赋值和复制 22
1.3.8 析构函数 25
1.4 静态成员 27
1.4.1 静态数据成员 27
1.4.2 静态成员函数 29
1.5 友元 30
1.5.1 友元函数 30
1.5.2 友元类 32
1.6 类模板 33
本章小结 35
习题1 36
第2章 C++开发环境搭建及简介 38
2.1 Visual Studio 2015开发环境 38
2.2 在Visual Studio 2015下创建C++项目 40
2.3 断点调试和程序调试技巧 43
本章小结 45
习题2 45
第3章 程序的结构 46
3.1 从C到C++ 46
3.1.1 概述 46
3.1.2 C语言的语法 46
3.1.3 C++对C的扩充 56
3.2 C++的简单程序使用 60
3.3 程序结构与效率 63
3.3.1 顺序结构 63
3.3.2 选择结构 64
3.3.3 循环结构 70
本章小结 75
习题3 76
第4章 函数 77
4.1 函数的基本知识 77
4.1.1 概述 77
4.1.2 函数定义的一般形式 77
4.2 系统函数的调用 78
4.2.1 使用cout 78
4.2.2 使用cin 79
4.2.3 输出的基本格式 80
4.3 函数的参数和函数的值 82
4.3.1 函数的形式参数和实际参数 82
4.3.2 函数的返回值 84
4.4 函数的调用 84
4.4.1 函数的基本调用 84
4.4.2 函数的嵌套调用 85
4.4.3 函数的递归调用 86
4.5 函数和数组 88
4.5.1 函数和一维数组 88
4.5.2 函数和二维数组 90
4.6 函数和结构体 92
4.6.1 结构体变量作为函数参数 92
4.6.2 结构体的返回值为结构体 93
4.6.3 结构体指针变量作为函数参数 94
4.7 函数和字符串 95
4.7.1 字符串作为参数 95
4.7.2 字符串作为返回值 97
4.7.3 函数和string对象 98
4.8 函数指针 98
4.8.1 声明函数指针 99
4.8.2 函数指针示例 99
4.9 函数和对象 100
本章小结 106
习题4 107
第5章 数组 110
5.1 一维数组 110
5.1.1 一维数组的定义 111
5.1.2 一维数组的初始化 111
5.1.3 一维数组的引用 113
5.1.4 一维数组的内存结构和应用 114
5.2 二维数组 118
5.2.1 二维数组的定义 118
5.2.2 二维数组的初始化 119
5.2.3 二维数组的引用 120
5.2.4 二维数组的内存结构及应用 121
5.3 多维数组 123
5.4 数组越界 125
5.5 字符数组与字符串 125
5.5.1 字符数组 125
5.5.2 字符串 126
5.5.3 C++字符串类 129
5.5.4 常用字符串操作函数 129
5.6 对象数组 132
5.6.1 对象数组的声明及引用 132
5.6.2 对象数组的应用 132
本章小结 136
习题5 136
第6章 指针 139
6.1 一维数组 139
6.1.1 指针的定义及其初始化 139
6.1.2 void指针 140
6.2 利用指针访问对象 141
6.3 指针的算术运算 142
6.3.1 指针的递增递减 142
6.3.2 指针的加与减 143
6.3.3 指针的比较 144
6.4 数组指针和指针数组 145
6.4.1 数组指针 145
6.4.2 指针数组 146
6.5 指向指针的指针 149
6.6 指针参数和函数性指针 151
6.6.1 指针参数 151
6.6.2 函数型指针 152
6.7 const与指针 153
6.7.1 const的使用 153
6.7.2 指针和const 155
6.8 对象指针和this指针 156
6.8.1 对象指针 156
6.8.2 this指针 159
本章小结 160
习题6 161
第7章 继承与派生 162
7.1 什么是继承与派生 162
7.2 派生类的定义 163
7.3 派生类的构成 164
7.4 派生类的访问属性 166
7.4.1 公用继承 166
7.4.2 私有继承 170
7.4.3 保护继承 173
7.4.4 多级派生时的访问属性 176
7.5 派生类的构造函数和析构函数 178
7.5.1 简单的派生类的构造函数 178
7.5.2 有子对象的派生类的构造函数 180
7.5.3 多层派生时的构造函数 183
7.5.4 派生类构造函数的特殊形式 186
7.5.5 派生类的析构函数 186
7.6 多重继承 188
7.6.1 声明多重继承的方式 188
7.6.2 多重继承派生类的构造函数 190
7.6.3 多重继承的二义性 193
7.6.4 虚基类 195
7.7 基类与派生类的转换 195
7.8 继承与组合 196
本章小结 196
习题7 197
第8章 多态性 201
8.1 多态性概述 201
8.2 函数重载 202
8.3 运算符重载 203
8.3.1 运算符重载概念 203
8.3.2 运算符重载实现 204
8.4 不同类型数据间的转换 210
8.5 虚函数 211
8.6 虚析构函数与抽象类 216
8.6.1 虚析构函数 216
8.6.2 抽象类 218
8.7 指针与多态性 219
本章小结 221
习题8 221
第9章 流类库与输入输出 222
9.1 简介 222
9.2 输出流 224
9.3 输入流 225
9.4 非格式化的I/O操作 229
9.5 流操纵符 230
9.6 文件操作 232
本章小结 237
习题9 237
第10章 异常处理 239
10.1 异常概述 239
10.2 异常处理的基本语法 239
10.3 实例程序分析 242
本章小结 244
习题10 244
参考文献 246
附录A 面向对象课程设计综合实例 247