《C++语言探索发现学习教程》PDF下载

  • 购买积分:13 如何计算积分?
  • 作  者:雷小锋,毛善君,张海荣著
  • 出 版 社:徐州:中国矿业大学出版社
  • 出版年份:2015
  • ISBN:9787564626426
  • 页数:361 页
图书介绍:本书包括从人机需求到C++语言,欲善其事先利其器,简单数据的描述和处理,结构化编程和程序组织,复合数据的描述和处理,描述和使用对象,对象的组合和继承,泛化数据类型:模板与泛型编程。

第1章 从人机需求到C++语言 1

1.1 人类如何求解问题? 1

1.1.1 自己动手:过程化思维 1

1.1.2 求助他人:面向对象思维 2

1.1.3 发明炒菜机:泛型思维 3

1.2 计算机如何执行程序? 4

1.2.1 计算机的工作原理 4

1.2.2 存储器的逻辑结构 5

1.3 从人机需求到计算机语言 9

1.3.1 计算机母语:机器语言 9

1.3.2 引入助记符:汇编语言 10

1.3.3 满足人的需求:高级语言 11

1.4 从人机需求到C++语言 11

1.4.1 C++过程化思维篇 11

1.4.2 C++面向对象思维篇 12

1.4.3 C++语言泛型思维篇 14

1.5 章节小结 14

习题 15

第2章 欲善其事 先利其器 16

2.1 编写素数判定程序 16

2.1.1 新建工程和C++源文件 16

2.1.2 C++程序的一般结构 18

2.1.3 编写素数判定程序 19

2.1.4 程序组织和编译链接 27

2.2 C++程序概览 29

2.2.1 C++程序是字符序列 29

2.2.2 C++程序是单词序列 29

2.2.3 C++程序是语句序列 31

2.2.4 C++程序是函数集合 32

2.2.5 C++程序是一组文件 33

2.3 章节小结 34

习题 34

第一篇 过程化思维篇 37

第3章 简单数据的描述和处理 37

3.1 描述简单数据 37

3.1.1 描述数据的人机需求 37

3.1.2 约定数据规格:数据类型 39

3.1.3 描述字面数据:字面量 41

3.1.4 描述可变数据:变量 46

3.2 数据的基本运算处理 49

3.2.1 C++语言的表达式 50

3.2.2 C++运算符及其表达式 52

3.2.3 表达式的类型转换规则 61

3.2.4 运算符和表达式小结 63

3.3 控制数据处理流程 64

3.3.1 选择:“如果-就” 64

3.3.2 循环:“如果-就反复执行” 68

3.3.3 控制流程的跳转 71

3.4 数据输入输出处理 73

3.4.1 输入输出流的概念 73

3.4.2 键盘输入处理:cin 74

3.4.3 屏幕输出处理:cout 74

3.4.4 输入输出格式控制 76

3.4.5 文件输入输出处理 77

3.5 数据处理机器:函数 85

3.5.1 从数据处理机器到函数 85

3.5.2 制造数据处理机器:定义函数 86

3.5.3 使用数据处理机器:调用函数 87

3.5.4 函数调用的形参生成 91

3.5.5 函数嵌套和递归 93

3.5.6 函数内联(inline) 96

3.5.7 函数重载和默认参数值 97

3.6 章节小结 99

习题 100

第4章 结构化编程和程序组织 103

4.1 结构化编程思想实践 103

4.1.1 进制转换演示程序 103

4.1.2 函数就地声明的问题 106

4.1.3 头文件集中声明 108

4.2 程序的多文件组织结构 109

4.2.1 多文件组织程序 109

4.2.2 独立编译和多目标链接 110

4.3 作用域和生存期 111

4.3.1 作用域:程序实体存在的空间范围 111

4.3.2 生存期:程序实体存在的时间范围 114

4.3.3 作用域和生存期小结 116

4.3.4 多文件共享程序实体:链接性 116

4.4 避免全局冲突:名字空间 118

4.4.1 全局程序实体的冲突问题 118

4.4.2 名字空间 119

4.4.3 C++标准名字空间 122

4.5 章节小结 123

习题 123

第5章 复合数据的描述和处理 125

5.1 描述不变的变量:常变量 125

5.1.1 宏定义指令 125

5.1.2 常变量 126

5.2 描述变量集合:数组变量 126

5.2.1 定义数组变量 127

5.2.2 访问数组元素 128

5.2.3 数组的数组:多维数组 129

5.3 存放地址的变量:指针变量 132

5.3.1 定义指针变量 133

5.3.2 指针访问和操作 134

5.3.3 无类型指针:void 137

5.3.4 指针与动态变量 138

5.3.5 指针和动态数组 140

5.4 描述字符串:字符串变量 143

5.4.1 字符数组实现字符串 144

5.4.2 字符指针实现字符串 144

5.4.3 操作字符串 145

5.5 变量的别名:引用变量 145

5.5.1 定义引用 145

5.5.2 引用作为函数形参 146

5.6 嵌套复合的数据类型 147

5.6.1 常量数组与枚举 148

5.6.2 指针数组和数组指针 150

5.6.3 常量指针和指针常量 151

5.6.4 多维数组和多级指针 152

5.6.5 常变量、数组、指针的引用 153

5.6.6 简化嵌套复合:typedef 154

5.7 复合数据类型与函数 155

5.7.1 数组名用作函数参数 155

5.7.2 函数如何返回数组 157

5.7.3 指针与函数 162

5.7.4 引用与函数 166

5.8 结构化编程实践 167

5.8.1 求解约瑟夫问题 167

5.8.2 矩阵转置问题 169

5.9 章节小结 171

习题 171

第二篇 面向对象思维篇 177

第6章 描述和使用对象 177

6.1 描述对象的人机需求 177

6.1.1 人如何描述对象:定义类 177

6.1.2 计算机的需求:定义数据类型 178

6.2 如何定义类 178

6.2.1 定义类的语法 179

6.2.2 类是定制数据类型 182

6.3 产生对象 184

6.3.1 对象和变量 184

6.3.2 访问对象成员 184

6.4 基于对象求解日期问题 187

6.4.1 main函数:对象之间的沟通协作过程 187

6.4.2 描述日期对象:CDate类 188

6.4.3 成员函数input 188

6.4.4 成员函数diff 190

6.4.5 成员函数add 192

6.5 类成员:约定对象的属性和行为 193

6.5.1 类数据成员 193

6.5.2 类成员函数 194

6.6 约定对象生死时刻的行为 195

6.6.1 构造函数:约定对象产生的初始化行为 195

6.6.2 析构函数:约定对象死亡的善后行为 201

6.6.3 构造和析构函数的调用时机 203

6.7 约定对象运算的行为:重载操作符 211

6.7.1 重载操作符 212

6.7.2 成员重载操作符 212

6.7.3 非成员重载操作符 212

6.7.4 友元:我是你的朋友 213

6.7.5 两种操作符重载方式比较 216

6.7.6 重载CDate类的操作符 217

6.7.7 重载赋值操作符 219

6.8 约定类成员的常量性 221

6.8.1 常量数据成员 221

6.8.2 常量成员函数 222

6.8.3 volatile成员 225

6.9 约定类成员的静态性 225

6.9.1 静态数据成员 226

6.9.2 静态成员函数 228

6.9.3 const、static成员小结 230

6.10 基于循环链表求解约瑟夫问题 230

6.10.1 约瑟夫问题求解思路 230

6.10.2 实现CRing的成员函数 232

6.11 基于对象求解矩阵问题 234

6.11.1 设计矩阵类CMatrix 234

6.11.2 CMatrix类的构造和析构函数 234

6.11.3 重载CMatrix类的操作符 237

6.11.4 访问矩阵元素:重载函数调用 239

6.11.5 重载矩阵转置和乘法操作符 240

6.11.6 重载矩阵输入和输出操作符 241

6.11.7 组织CMatrix类求解问题 241

6.12 章节小结 242

习题 244

第7章 对象的组合和继承 246

7.1 基于组合关系定制类:组合类 246

7.1.1 组合类对象的构造和析构 247

7.1.2 子对象的显式初始化 248

7.2 基于类属关系定制类:继承与派生 249

7.2.1 继承的含义和语法 249

7.2.2 选择继承方式 251

7.2.3 改造基类成员 254

7.2.4 重写构造和析构函数 257

7.2.5 派生类定制小结 259

7.3 利用组合/继承求解线性方程组 260

7.3.1 组合出线性方程组类 260

7.3.2 求解线性方程 261

7.4 派生类对象用作基类对象 264

7.4.1 派生类和基类的赋值兼容 264

7.4.2 针对基类引用/指针进行通用编程 268

7.5 对象行为的多态:重载和虚函数 270

7.5.1 通过重载实现编译期多态 270

7.5.2 通过虚函数实现运行期多态 271

7.5.3 虚函数的运行期绑定原理 274

7.6 运行期多态的编程实践 278

7.6.1 定义形状基类CShape 279

7.6.2 定义CShape的派生类 279

7.6.3 定义通用函数display 280

7.6.4 虚析构函数的用处 282

7.7 不产生对象的类:抽象类 284

7.7.1 抽象类是包含纯虚函数的类 285

7.7.2 应用纯虚函数求解定积分 288

7.7.3 只有纯虚函数的接口类 289

7.8 继承多个基类:多重继承和虚基类 291

7.8.1 多重继承的语法及其内涵 291

7.8.2 重复继承基类的问题 293

7.8.3 多重继承的适用场合 301

7.9 运行期类型识别RTTI 304

7.9.1 操作符typeid 304

7.9.2 操作符dynamic_cast 305

7.10 异常处理机制 306

7.10.1 C++异常处理机制 306

7.10.2 抛出异常:throw语句 307

7.10.3 捕获和处理异常:try-catch语句 307

7.11 章节小结 308

习题 309

第三篇 泛型思维篇 313

第8章 泛化数据类型:模板与泛型编程 313

8.1 数据类型泛化:定义模板 313

8.1.1 定义函数模板 314

8.1.2 定义类模板 315

8.1.3 定义通用数组类 316

8.2 应用模板:模板实例化 318

8.2.1 模板实例化的方法 318

8.2.2 模板参数推演 318

8.2.3 模板特化 319

8.3 C++标准模板库 321

8.3.1 标准模板库能干什么 321

8.3.2 利用STL求解问题 322

8.3.3 容器(container) 323

8.3.4 迭代器(iterator) 331

8.3.5 仿函数(function object) 335

8.3.6 算法(algorithms) 337

8.4 泛型编程实践 344

8.4.1 文本单词反转问题 344

8.4.2 多序列最小和问题 345

8.4.3 农夫过河问题 350

8.5 章节小结 359

习题 360