第1章 C++程序设计概述 1
1.1 C++语言的历史和演进 1
1.1.1 计算机语言的发展 1
1.1.2 C++语言的产生 2
1.1.3 C++语言的主要版本 2
1.2 C++语言的特点 2
1.2.1 面向过程 3
1.2.2 面向对象 3
1.3 面向对象的相关概念 3
1.4 C++程序的基本结构和开发环境 5
1.4.1 C++程序的基本结构 5
1.4.2 C++程序的实现 9
1.4.3 C++程序的开发环境 10
习题 17
第2章 C++语言基础 20
2.1 基本数据类型 20
2.2 标识符与关键字 22
2.3 常量与变量 24
2.3.1 常量 24
2.3.2 变量 27
2.4 运算符与表达式 28
2.4.1 运算符 28
2.4.2 表达式 33
2.5 数组 38
2.5.1 数组的定义 38
2.5.2 数组的赋值 39
2.5.3 字符数组 42
2.6 枚举 43
2.6.1 枚举类型定义 43
2.6.2 枚举变量定义 44
2.6.3 枚举变量赋值 44
2.7 结构体 45
2.7.1 结构体类型定义 45
2.7.2 结构体变量的定义和初始化 46
2.7.3 结构体变量的引用 47
2.8 共用体 48
2.9 控制语句 50
2.9.1 选择结构语句 50
2.9.2 循环结构语句 55
2.9.3 转向语句 61
2.10 应用实例——水果超市管理系统菜单设计 63
2.10.1 系统功能介绍 64
2.10.2 系统菜单设计 65
习题 66
第3章 指针和引用 71
3.1 指针 71
3.1.1 指针的概念 71
3.1.2 指针变量的定义 72
3.1.3 指针变量的运算 72
3.1.4 指针的指针 75
3.2 指针与数组 76
3.2.1 指向数组的指针 76
3.2.2 指针数组 80
3.3 字符串 82
3.3.1 C风格字符串 82
3.3.2 string类型 83
3.4 引用 85
3.4.1 引用的概念 85
3.4.2 指针和引用的区别与联系 86
3.5 指针及引用在函数中的作用 88
3.6 应用实例——水果超市管理系统的水果基本信息管理 89
习题 91
第4章 函数 96
4.1 函数的定义、声明和类型 96
4.1.1 函数的定义 96
4.1.2 函数的声明 98
4.1.3 函数的类型 99
4.2 函数的参数与调用 100
4.2.1 函数的参数 100
4.2.2 函数的调用 101
4.3 内联函数 105
4.4 函数的重载 106
4.5 标识符的作用域 108
4.5.1 作用域的种类 108
4.5.2 标识符的作用域规则 109
4.5.3 全局变量和局部变量 111
4.6 应用实例——水果超市管理系统中购物车的设计 115
习题 118
第5章 类和对象 123
5.1 类的定义 123
5.1.1 类的定义格式 123
5.1.2 类成员的访问控制 125
5.1.3 成员函数的特性 126
5.2 对象的定义和使用 128
5.2.1 对象的定义方法 128
5.2.2 对象成员的表示方法 128
5.3 构造函数和析构函数 130
5.3.1 构造函数 130
5.3.2 析构函数 135
5.4 静态成员 137
5.4.1 静态数据成员 138
5.4.2 静态成员函数 139
5.5 常对象和常成员 140
5.5.1 常对象 140
5.5.2 常数据成员 141
5.5.3 常成员函数 141
5.6 对象指针和对象引用 143
5.6.1 对象指针 143
5.6.2 this指针 147
5.6.3 对象引用 148
5.7 对象数组 149
5.7.1 对象数组的定义和使用 149
5.7.2 对象指针数组 150
5.7.3 指向对象数组的指针 151
5.8 子对象和堆对象 152
5.8.1 子对象 153
5.8.2 堆对象 154
5.9 友元 156
5.9.1 友元函数 156
5.9.2 友元类 157
5.10 类的作用域和对象的生存期 159
5.10.1 类的作用域 159
5.10.2 对象的生存期 159
5.11 应用实例——水果超市管理系统基本类的设计 161
5.11.1 “水果类”Fruit的设计 161
5.11.2 “水果总类”FruitKind的设计 163
5.11.3 “购买水果品种类”CartItem的设计 167
5.11.4 “购物车类”Cart的设计 168
习题 169
第6章 继承 176
6.1 继承的概念 176
6.1.1 什么是继承 176
6.1.2 派生类的定义格式 177
6.1.3 派生类对象的结构 177
6.2 继承方式 178
6.2.1 公有继承 178
6.2.2 私有继承 180
6.2.3 保护继承 181
6.3 派生类的构造函数和析构函数 183
6.4 多继承 186
6.4.1 多继承的概念 186
6.4.2 多继承下的构造函数 188
6.4.3 二义性 191
6.5 虚基类 195
6.5.1 虚基类的定义 195
6.5.2 虚基类的构造函数和析构函数 196
6.6 类型转换 198
6.6.1 派生类到基类的转换 198
6.6.2 基类到派生类的转换 199
6.7 应用实例——水果超市管理系统中类的继承关系 199
6.7.1 “正价水果类”RegularFruit的设计 199
6.7.2 “特价水果类”DiscountFruit的设计 201
6.7.3 验证 203
习题 204
第7章 多态 210
7.1 多态的描述 210
7.1.1 什么是多态 210
7.1.2 多态的分类 210
7.1.3 多态的实现方式 211
7.2 运算符重载 212
7.2.1 运算符重载的定义 212
7.2.2 双目运算符重载 213
7.2.3 单目运算符重载 218
7.3 虚函数 223
7.3.1 虚成员函数 226
7.3.2 虚析构函数 227
7.4 抽象类 230
7.4.1 纯虚函数 230
7.4.2 抽象类与具体类 231
7.5 应用实例——水果超市管理系统中虚函数的使用 232
习题 236
第8章 模板和STL 243
8.1 模板简介 243
8.2 函数模板 243
8.3 类模板 245
8.3.1 类模板的定义 246
8.3.2 类模板用作函数的参数 248
8.3.3 类模板用作基类 248
8.4 STL 249
8.4.1 STL简介 249
8.4.2 容器 250
8.4.3 迭代子 251
8.4.4 算法 253
习题 254
第9章 异常处理 256
9.1 简介 256
9.2 基本语法 257
9.3 构造函数、析构函数和异常 261
9.4 继承和异常 264
9.5 标准库中的异常类 264
习题 266
第10章 ACM-ICPC简介及在线实训 267
10.1 ACM-ICPC简介 267
10.2 在线实训模式 267
10.3 实训练习 269
习题 275
附录A C++常用运算符的功能、优先级和结合性 276
附录B 水果超市管理系统源程序清单 277
参考文献 286