《C++程序设计教程 第3版》PDF下载

  • 购买积分:13 如何计算积分?
  • 作  者:王珊珊,臧洌,张志航编著
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2017
  • ISBN:9787111552536
  • 页数:376 页
图书介绍:本书包括两部分内容。第一部分为第1~9章,以C++语言的基本语法为起点讲述面向过程的程序设计,内容包括基本数据类型、基本控制结构、函数、数组、结构体、指针和链表。第二部分为第10~15章,结合C++语言的应用实例,讲述面向对象程序设计的基本概念,内容包括类和对象、继承和派生、多态以及输入输出和文件操作。本书适用于程序设计语言的初学者,也适用于大学本科理工类各专业学习C++程序设计语言的学生,同时适用于自学C++语言的读者。

第1章 C+概述 1

1.1 计算机语言与程序 1

1.1.1 机器语言与程序 1

1.1.2 汇编语言与程序 1

1.1.3 高级语言与程序 2

1.2 从C到C++ 2

1.3 程序设计方法 3

1.3.1 结构化程序设计方法 3

1.3.2 面向对象程序设计方法 3

1.4 简单的C++程序介绍 4

1.5 程序开发步骤 6

第2章 数据类型、运算符和表达式 7

2.1 保留字和标识符 7

2.1.1 保留字 7

2.1.2 标识符 7

2.2 C++的基本数据类型 8

2.3 常量和变量 9

2.3.1 常量 9

2.3.2 符号常量 11

2.3.3 变量 12

2.4 基本运算符和表达式 13

2.4.1 C+++运算符及表达式简介 13

2.4.2 算术运算符和算术表达式 14

2.4.3 运算优先级和结合性 14

2.4.4 关系运算符和关系表达式 14

2.4.5 逻辑运算符和逻辑表达式 15

2.4.6 位运算符和位运算表达式 15

2.4.7 自增、自减运算符和表达式 17

2.4.8 赋值运算符和赋值表达式 18

2.4.9 逗号运算符和逗号表达式 18

2.4.10 sizeof运算符和表达式 19

2.4.11 逻辑运算优化的副作用 19

2.5 类型转换 19

2.5.1 赋值时的自动类型转换 19

2.5.2 各种类型运算量混合运算时的自动类型转换 21

2.5.3 强制类型转换 21

第3章 简单的输入输出 23

3.1 传统的输入输出函数实现方法 23

3.2 cout输出流 24

3.2.1 输出八进制数、十六进制数和用科学记数法表示的数 27

3.2.2 输出字符或字符串 28

3.3 cin输入流 29

3.3.1 输入十六进制或者八进制数据 31

3.3.2 输入字符数据 32

3.4 总结 34

第4章 C+的流程控制 35

4.1 算法概述 35

4.1.1 算法的作用和类别 35

4.1.2 算法的设计原则 36

4.1.3 算法的表示工具 36

4.1.4 结构化程序设计中基本结构的表示 38

4.2 C++程序的结构和语句 40

4.3 选择结构语句的使用 42

4.3.1 if语句 42

4.3.2 if语句的嵌套使用 45

4.3.3 条件运算符 46

4.3.4 switch语句 47

4.4 循环结构语句的使用 51

4.4.1 goto语句及标号的使用 51

4.4.2 while语句 52

4.4.3 for语句 53

4.4.4 do…while语句 54

4.4.5 break语句和continue语句 55

4.4.6 循环的嵌套 57

4.5 控制语句的应用举例 58

第5章 函数 64

5.1 概述 64

5.2 函数的定义 64

5.3 函数的调用 66

5.3.1 函数的原型声明 67

5.3.2 函数的传值调用 67

5.3.3 函数的引用调用 69

5.3.4 函数的嵌套调用 70

5.3.5 函数的递归调用 74

5.4 函数的参数 77

5.4.1 函数实参的求值顺序 77

5.4.2 函数形参的默认值 78

5.5 内联函数 79

5.6 函数重载 80

5.6.1 参数类型不同的重载函数 80

5.6.2 参数个数不同的重载函数 81

5.7 使用C++系统函数 81

5.8 作用域和存储类别 82

5.8.1 作用域 83

5.8.2 存储类别 86

5.8.3 全局变量的作用域的扩展和限制 89

5.9 程序的多文件组织 91

5.9.1 内部函数和外部函数 91

5.9.2 多文件组织的编译和连接 93

第6章 编译预处理 94

6.1 宏定义 94

6.1.1 不带参数的宏定义 94

6.1.2 带参数的宏定义 96

6.2 “文件包含”处理 98

6.3 条件编译 99

第7章 数组 102

7.1 数组的定义及应用 102

7.1.1 一维数组的定义及使用 102

7.1.2 一维数组作为函数参数 105

7.1.3 多维数组的定义及使用 115

7.1.4 二维数组作为函数参数 117

7.2 字符数组的定义及应用 121

7.2.1 字符数组的定义 121

7.2.2 字符数组的初始化 122

7.2.3 字符数组的使用 122

7.2.4 字符串和字符串结束标志 123

7.2.5 字符数组的输入输出 124

7.2.6 字符串处理函数 125

7.2.7 字符数组应用举例 128

第8章 结构体、共用体和枚举类型 131

8.1 结构体的定义及应用 131

8.1.1 结构体类型的定义 131

8.1.2 结构体类型变量的定义 132

8.1.3 结构体类型变量及其成员的引用 133

8.1.4 结构体数组 136

8.2 共用体的定义及应用 139

8.2.1 共用体类型及其变量的定义 139

8.2.2 共用体类型变量的引用 140

8.2.3 共用体数据类型的特点 140

8.3 枚举类型的定义及应用 141

8.3.1 枚举类型的定义 142

8.3.2 枚举类型变量的定义 142

8.3.3 枚举类型变量的使用 142

第9章 指针、引用和链表 145

9.1 指针和指针变量 145

9.1.1 指针的概念 145

9.1.2 指针变量的定义 145

9.1.3 有关指针的运算符&和 146

9.1.4 指针变量的赋值 146

9.1.5 直接访问和间接访问 146

9.1.6 地址值的输出 149

9.2 指针作为函数参数 149

9.2.1 基本类型量作为函数参数 150

9.2.2 指针变量作为函数参数 151

9.3 指针和指向数组的指针 152

9.3.1 一维数组与指针 152

9.3.2 一维数组元素指针作为函数参数 155

9.3.3 指针和字符串 159

9.3.4 二维数组与指针 163

9.3.5 获得函数处理结果的几种方法 168

9.4 指针数组 170

9.4.1 指针数组的定义和使用 170

9.4.2 使用指针数组处理二维数组 171

9.4.3 利用字符指针数组处理字符串 171

9.4.4 main函数的参数 173

9.5 指向指针的指针 174

9.6 指针和函数 175

9.6.1 函数指针 175

9.6.2 返回指针值的函数 178

9.7 指针小结 179

9.8 const型变量和const型指针、引用类型 181

9.8.1 const型变量和const型指针 181

9.8.2 引用类型变量的说明及使用 183

9.8.3 引用和函数 184

9.9 存储空间的动态分配和释放 186

9.9.1 new和delete运算符 186

9.9.2 使用new和delete运算符的注意事项 188

9.10 链表及其算法 188

9.10.1 结构体与指针 188

9.10.2 链表的概念 190

9.10.3 链表的常用算法 191

9.11 用typedef定义新类型名 198

第10章 类和对象 201

10.1 类和对象的定义 201

10.1.1 从结构体到类 201

10.1.2 类和对象的定义格式 201

10.1.3 对象成员的访问 203

10.1.4 成员函数的定义 203

10.1.5 对象的存储空间 206

10.1.6 定义类和对象的有关说明 206

10.2 初始化和撤销对象 207

10.2.1 构造函数和析构函数 208

10.2.2 缺省构造函数和缺省析构函数 213

10.2.3 拷贝构造函数和缺省拷贝构造函数 215

10.2.4 拷贝构造函数的调用时机 218

10.2.5 利用构造函数进行类型转换 220

10.3 成员函数的特性 221

10.3.1 内联函数和外联函数 221

10.3.2 成员函数的重载 222

10.4 构造函数和对象成员 225

10.5 this指针 226

第11章 类和对象的其他特性 229

11.1 静态成员 229

11.1.1 静态数据成员 229

11.1.2 静态成员函数 230

11.2 友元 232

11.2.1 友元函数 232

11.2.2 一个类的成员函数作为另一个类的友元函数 233

11.2.3 友元类 234

11.3 常数据成员和常成员函数 235

11.3.1 常数据成员 235

11.3.2 常成员函数 236

第12章 继承和派生 238

12.1 继承的基本概念 238

12.2 单一继承 238

12.2.1 公有继承(派生) 239

12.2.2 私有继承(派生) 242

12.2.3 保护继承(派生) 243

12.2.4 private成员和protected成员的区别 243

12.3 多重继承 244

12.4 基类成员的初始化 246

12.4.1 基类的构造函数和析构函数的调用顺序 246

12.4.2 对象成员构造函数和析构函数的调用顺序 247

12.4.3 关于构造函数和析构函数的继承问题 248

12.5 二义性和支配规则 249

12.5.1 二义性(访问冲突) 249

12.5.2 支配规则 252

12.6 虚基类 253

12.7 访问基类成员和对象成员的成员 256

12.7.1 访问对象成员的成员 256

12.7.2 访问基类成员 257

12.8 赋值兼容 258

第13章 多态性 260

13.1 函数重载 260

13.2 运算符重载 261

13.2.1 运算符重载的几点说明 261

13.2.2 运算符重载的两种方式 262

13.2.3 类型转换函数——将本类对象转换成其他类对象 276

13.2.4 其他运算符的重载 278

13.2.5 字符串类 288

13.2.6 运算符重载函数小结 294

13.3 静态联编 294

13.4 动态联编和虚函数 296

13.4.1 虚函数的定义和使用 296

13.4.2 虚析构函数 301

13.5 纯虚函数和抽象类 303

第14章 输入输出流 313

14.1 输入输出基本概念 313

14.1.1 输入输出流 313

14.1.2 文本流、二进制流和数据文件 313

14.1.3 缓冲 314

14.2 输入输出类库 314

14.2.1 基本输入输出流类体系 314

14.2.2 用运算符重载实现基本数据类型量的输入输出 316

14.2.3 缺省的输入输出格式 317

14.3 输入输出格式控制 318

14.3.1 使用成员函数进行格式控制 318

14.3.2 使用操纵算子进行格式控制 322

14.4 使用成员函数实现输入输出 324

14.4.1 输出成员函数 324

14.4.2 输入成员函数 325

14.5 重载插入和提取运算符 328

14.6 文件流类 332

14.6.1 文件流类体系 332

14.6.2 文件的打开和关闭 332

14.6.3 文本文件的读写 335

14.6.4 二进制文件的读写 341

14.7 文件的随机访问 343

14.8 输入输出流的出错处理 346

第15章 模板 349

15.1 函数模板 349

15.1.1 函数模板的定义和使用 351

15.1.2 模板函数的重载 356

15.1.3 函数模板的重载 357

15.2 类模板 358

15.2.1 类模板的定义和使用 360

15.2.2 类模板的友元函数 365

15.2.3 类模板的特殊处理 368

15.3 总结 370

附录A ASCII码表 371

附录B常用库函数 372

参考文献 376