《标準C++程式设计(第2版)》可作为第二门程式设计课程的教材,最好应在学过C语言之后使用。本书内容包括过程化设计和面向对象两部分构成,但对过程化设计只以很少篇幅做提要式介绍。
为了帮助学习者顺利进行编程实践,书后以附录形式对C++Builder 6.0、DEV C++和Visual C++ 6.0这几种环境的编程甚至程式调试方法都给出了适度介绍。
基本介绍
- 书名:标準C++程式设计(第2版)
- 作者:牛连强等
- ISBN:9787121306631
- 出版社:电子工业出版社
- 出版时间:2017-02-01
图书内容
本书可作为第二门程式设计课程的教材,最好应在学过C语言之后使用。本书内容包括过程化设计和面向对象两部分构成,但对过程化设计只以很少篇幅做提要式介绍。
全书共分10章。第1章介绍C++语言的预备知识,并用简单示例比较了过程化程式设计与面向对象程式设计在思考问题上的差异,介绍面向对象程式设计的主要特点,基本的面向对象问题分析和程式设计方法。第2章介绍C++语言的过程化语法,并对C++语言中的基本对象作了渗透。第3、4章介绍C++语言的封装特性,第5、6章分别介绍继承和多态性。第7、8章分别讨论运算符重载和流技术。第9章简要说明了建立在类模板基础上的泛型编程技术。第10章介绍了C++的异常处理机制。本书的每章开始以精炼的语言扼要说明其主要内容,难点被适当地分解在各章里。
部分重点章节安排了若干有实际背景的设计案例。每章最后配备了若干思考题和相当数量的习题。思考题有助于理解语言的语法现象,值得认真对照教材去分析,或者构造适当的例子去实验,而通过完成这些习题,有助于对知识点的透彻掌握。为了帮助学习者顺利进行编程实践,书后以附录形式对C++Builder 6.0、DEV C++和Visual C++ 6.0这几种环境的编程甚至程式调试方法都给出了适度介绍。
目 录
第1章 C++语言与面向对象程式设计概述 1
1.1 C++语言概述 1
1.1.1 标準C++语言的产生与发展 1
1.1.2 编写简单的C++语言程式 2
1.2 由过程化到面向对象程式设计 4
1.2.1 过程化程式设计 4
1.2.2 面向对象的程式设计 6
1.3 面向对象程式的主要特徵 7
1.3.1 抽象与封装(encapsulation) 8
1.3.2 由继承(inheritance)实现重用 9
1.3.3 由多态(polymorphism)反映
变革 10
1.4 面向对象的问题分析 11
1.4.1 确定类 11
1.4.2 确定类的属性 11
1.4.3 确定类的方法 12
1.4.4 确定对象模式 12
思考与练习1 13
实验1 13
第2章 C++语言基础 14
2.1 标识符与关键字 14
2.1.1 标识符 14
2.1.2 关键字 14
2.2 数据与数据类型 15
2.2.1 基本数据类型 15
2.2.3 字面值 15
2.2.4 符号常量 16
2.2.5 变数 18
2.3 基本运算 18
2.3.1 运算符和表达式 18
2.3.2 数据类型转换与造型 20
2.4 语句与流程控制 21
2.4.1 简单语句与複合语句 21
2.4.2 分支语句 22
2.4.3 循环语句 23
2.4.4 流程转向语句 24
2.4.5 数据输入与输出 25
2.5 指针、数组与引用 26
2.5.1 指针 26
2.5.2 数组 28
2.5.3 引用 30
2.6 函式 31
2.6.1 函式的定义与声明 31
2.6.2 函式调用与参数匹配 32
2.6.3 函式返回值与函式调用表达式 35
2.6.4 形式参数的默认值 37
2.6.5 内联函式 37
2.6.6 函式重载 38
2.6.7 函式模板 39
2.7 new、delete与动态对象 42
2.7.1 动态生成和销毁一个对象 42
2.7.2 动态生成和销毁对象数组 43
2.8 名字空间 43
2.8.1 名字冲突及对策 43
2.8.2 定义和使用名字空间 44
2.9 预处理指令 45
2.9.1 宏定义 45
2.9.2 条件编译 46
2.9.3 档案包含 46
思考与练习2 47
实验2 50
第3章 类、对象与封装 51
3.1 类 51
3.1.1 类的含义与表述 51
3.1.2 类定义的语法规则 52
3.2 对象 55
3.2.1 对象定义 55
3.2.2 成员访问 56
3.2.3 对象存储 58
3.3 类的方法 59
3.3.1 为类提供必要的方法 59
3.3.2 inline方法 61
3.3.3 const方法 61
3.3.4 隐含的this指针 62
3.3.5 方法重载与预设参数 63
3.3.6 类的模板函式方法 64
3.4 构造与析构 64
3.4.1 初始化的难题 64
3.4.2 构造函式与对象初始化 65
3.4.3 无名对象 67
3.4.4 对象数组与动态对象 68
3.4.5 初始化列表与特殊成员的
初始化 69
3.4.6 共用体类与位域类 71
3.4.7 析构函式与对象拆除 72
3.5 拷贝构造与对象拆除 73
3.5.1 拷贝构建新对象 73
3.5.2 改变预设的拷贝行为 74
3.5.3 拷贝构造器的实现 75
3.5.4 用自己定义的析构器拆除对象 76
3.6 字元串类string 76
3.6.1 string类的属性与对象构造 76
3.6.2 string类支持的主要运算 76
3.6.3 string类的主要方法 77
3.7 案例一:设计一个栈类 78
3.8 案例二:公司员工类的设计(一) 80
思考与练习3 83
实验3 85
第4章 类的静态成员、友元与指针访问 87
4.1 静态成员 87
4.1.1 静态属性 87
4.1.2 静态方法 90
4.2 友元 91
4.2.1 友元函式 91
4.2.2 类方法作为友元 92
4.2.3 友元类 93
4.3 指向类成员的指针 94
4.3.1 利用普通指针访问属性 94
4.3.2 指向非静态方法的指针 95
4.4 案例三:账户类的设计 96
思考与练习4 98
实验4 100
第5章 继承与重用 101
5.1 继承的概念与表示 101
5.1.1 继承与派生 101
5.1.2 继承关係的描述 102
5.2 继承的实现 103
5.2.1 继承的语法形式 103
5.2.2 访问父类的成员 104
5.3 类之间的关係与类的构造 107
5.3.1 继承与聚集 108
5.3.2 子类的构造 109
5.3.3 派生类的析构 110
5.4 複杂对象的构造与析构 111
5.4.1 责任重大的构造器 111
5.4.2 类成员的构造与析构次序 112
5.5 继承的工作方式 113
5.5.1 派生类是一种(个)基类 113
5.5.2 利用指针和引用的访问 114
5.5.3 非public方式派生 114
5.6 案例四:公司员工类的设计(二) 115
5.6.1 雇员类的定义 115
5.6.2 工人类的定义 116
5.6.3 经理类的定义 117
思考与练习5 118
实验5 121
第6章 虚函式与多态性 122
6.1 多态性及其语法规则 122
6.1.1 多态性与联编方式 122
6.1.2 用虚函式实现动态绑定 123
6.2 共同基类下的对象访问 124
6.2.1 概念中的共性 124
6.2.2 公共基类 125
6.2.3 利用虚函式支持动态访问 126
6.3 对虚函式的进一步讨论 127
6.3.1 如何构成虚函式关係 127
6.3.2 类的构造、析构与虚函式 129
6.3.3 虚函式的内部实现机制 130
6.3.4 重载、覆盖和隐藏 132
6.3.5 动态造型(dynamic_cast) 134
6.4 纯虚函式与抽象类 135
6.4.1 纯虚函式 135
6.4.2 抽象类 136
6.5 多重继承 138
6.5.1 多重继承的语法规则 138
6.5.2 多重继承中的二义性 140
6.5.3 虚继承 141
6.6 案例五:公司员工类的设计(三) 144
6.6.1 雇员类的定义 145
6.6.2 其他类的定义 145
思考与练习6 146
实验6 149
第7章 运算符重载 150
7.1 重载运算符的概念与一般方法 150
7.1.1 运算符重载是函式重载 150
7.1.2 重载运算符的两种方法 151
7.1.3 重载运算符的限制 153
7.2 重载运算符的设计 154
7.2.1 运算符函式的参数 154
7.2.2 运算符函式的返回值 154
7.3 常见运算符的重载 155
7.3.1 重载增量运算符++ 155
7.3.2 重载赋值运算符= 157
7.3.3 重载==运算符和!=运算符 160
7.3.4 重载下标运算符[] 160
7.3.5 重载类型转换运算符() 161
7.3.6 重载函式调用运算符与函式
对象 162
7.4 案例六:一个向量类的运算符
重载 164
7.4.1 向量类定义 164
7.4.2 为向量添加运算 166
思考与练习7 168
实验7 168
第8章 流与档案操作 169
8.1 理解流机制 169
8.1.1 流与档案 169
8.1.2 从函式到对象 169
8.1.3 源、汇和iostream流控制类 170
8.2 构造可流的类 172
8.2.1 再谈cout和cin对象 172
8.2.2 重载输出运算符<< 172
8.2.3 重载输入运算符>> 173
8.3 格式控制 174
8.3.1 使用流的方法 175
8.3.2 使用操控符(Manipulators) 179
8.3.3 记忆体格式化(字元串流) 182
8.4 档案流 183
8.4.1 档案流的打开与关闭 183
8.4.2 档案的读写操作 185
8.4.3 二进制档案 186
8.4.4 档案的随机访问 187
8.5 案例七:一个图书管理系统的
设计 188
8.5.1 对象的输入/输出 189
8.5.2 管理程式 189
思考与练习8 191
实验8 191
第9章 类模板、容器与泛型算法 192
9.1 类模板 192
9.1.1 类模板的定义 192
9.1.2 使用类模板 193
9.1.3 类模板的方法实现 194
9.1.4 类模板与普通类之间的相互
继承 195
9.1.5 一个模板类实例complex 196
9.1.6 设计一个伫列模板Queue 197
9.2 容器与泛型 199
9.2.1 抽象容器类模板 199
9.2.2 泛型编程 199
9.3 叠代器 202
9.3.1 输入叠代器(InputIterator) 203
9.3.2 输出叠代器(OutputIterator) 204
9.3.3 前向叠代器(ForwardIterator) 204
9.3.4 双向叠代器(BidirectionalIterator)
和随机访问叠代器(Random-
AccessIterator) 204
9.3.5 容器提供的叠代器 205
9.3.6 插入叠代器(适配器) 205
9.3.7 反向叠代器(reverse_iterator) 206
9.4 几种主要容器类与类的方法 207
9.4.1 容器类的主要方法 207
9.4.2 向量(vector)容器 208
9.4.3 列表(list)容器 209
9.4.4 双端伫列(deque)、栈(stack)
和伫列(queue)容器 210
9.4.5 映射(map)容器 210
9.5 常用的通用算法 212
9.5.1 唯读算法 212
9.5.2 改写元素算法 213
9.5.3 元素排序算法 213
思考与练习9 214
实验9 215
第10章 异常处理 216
10.1 异常及常规处理方法 216
10.1.1 常见的异常 216
10.1.2 常规处理方法 216
10.2 用try-catch结构处理异常 218
10.2.1 try-catch异常处理机制 218
10.2.2 异常 219
10.2.3 抛出异常 219
10.2.4 用try结构监视异常 220
10.2.5 用catch结构处理异常 220
10.3 合理地处理异常 222
10.3.1 异常类设计 222
10.3.2 多catch结构组成的异常
捕捉网 224
10.3.3 捕捉自己应该处理的异常 225
10.3.4 申明异常 227
思考与练习10 228
实验10 228
附录A C++Builder集成化环境的使用 229
附录B DEV-C++与Visual C++ 6编程
环境 238
附录C 运算符的优先权与结合性 244
参考文献 245