《高等院校“十三五”规划教材 新标准C++程序设计》PDF下载

  • 购买积分:15 如何计算积分?
  • 作  者:严悍,陆建峰,衷宜编著
  • 出 版 社:南京:东南大学出版社
  • 出版年份:2018
  • ISBN:9787564178475
  • 页数:456 页
图书介绍:C++是国内外广泛采用的编程语言,应用于多种计算平台。国内很多高校都开设C/C++编程的相关课程,也出现了数百种相关教材。C/C++语言在2011年之前主要采用C99和2003标准。2011年发布了C++11新标准,推出近百个新语言特征。之后C++14,C++17进一步完善了新标准。新标准引入许多新概念新规则,使C++编程表达复杂多变,初学者感到学习实践难度较大。本书采用研讨加实践的方式,力图使初学者能熟练掌握新概念新规则,并增强编程求解能力。本书有15章,主要分为两部分:第1部分(前8章)主要介绍结构化编程和函数式编程,第2部分(后7章)主要介绍面向对象编程和泛型编程。本书可作为大学各学科专业学生学习实践C++的基础教材,也适合作为软件工程开发人员的自学用书和研究人员的参考用书。

第1章 概述 1

1.1 C++语言发展历史 1

1.2 一个简单的C++程序 2

1.3 C++程序的开发步骤 3

1.4 开发工具简介 4

1.5 C++标准及开发工具 6

1.6 C++11与C++14新特征 7

1.7 本书组织结构 10

1.8 类型大图及导读 10

第2章 基本类型与变量 13

2.1 关键字和标识符 13

2.1.1 关键字 13

2.1.2 标识符 14

2.1.3 标点符号 15

2.1.4 分隔符与标记 15

2.2 基本类型 15

2.2.1 逻辑型 16

2.2.2 字符型 17

2.2.3 整数型 17

2.2.4 浮点型 18

2.2.5 空类型 19

2.3 字面值 19

2.3.1 逻辑值 19

2.3.2 整型值 19

2.3.3 浮点值 20

2.3.4 字符值 20

2.3.5 字符串值 22

2.4 变量 22

2.4.1 变量的说明 22

2.4.2 变量的初始化 23

2.4.3 auto初始化 23

2.4.4 变量的赋值 24

2.4.5 变量的输入输出 24

2.4.6 命名常量 27

小结 27

练习题 27

第3章 运算符与表达式 29

3.1 基本运算符 29

3.1.1 算术运算符 31

3.1.2 关系运算符 32

3.1.3 逻辑运算符 33

3.1.4 位运算符 34

3.1.5 条件运算符 36

3.1.6 赋值运算符 36

3.1.7 逗号运算符 37

3.1.8 自增自减运算符 37

3.1.9 sizeof运算符 39

3.1.10 typeid运算符 39

3.1.11 其他运算符 40

3.2 表达式 41

3.2.1 左值表达式和右值表达式 41

3.2.2 表达式语句 41

3.2.3 表达式类型与decltype 42

3.3 类型转换 42

3.3.1 自动类型转换 42

3.3.2 赋值类型转换 44

3.3.3 强制类型转换 45

小结 46

练习题 46

第4章 基本语句 49

4.1 语句分类 49

4.2 结构化编程基本结构 49

4.2.1 顺序结构 50

4.2.2 选择结构 50

4.2.3 循环结构 51

4.3 选择语句 52

4.3.1 条件语句 52

4.3.2 switch语句 55

4.4 循环语句 56

4.4.1 while语句 57

4.4.2 do-while语句 58

4.4.3 for语句 59

4.4.4 循环语句的比较 60

4.4.5 循环的嵌套 60

4.5 跳转语句 61

4.5.1 break语句 61

4.5.2 continue语句 62

4.5.3 goto语句与标号语句 63

4.6 综合示例 63

小结 66

练习题 67

第5章 函数和编译预处理 69

5.1 函数基本概念 69

5.1.1 库函数和用户定义函数 69

5.1.2 无参函数和有参函数 69

5.1.3 有返回函数和无返回函数 70

5.2 函数的定义 70

5.2.1 传统函数定义 70

5.2.2 函数定义的要点 71

5.3 函数的调用 72

5.3.1 函数调用的形式 72

5.3.2 函数调用的方式 72

5.3.3 函数调用与以值传递 73

5.4 函数重载 74

5.4.1 重载函数的定义 75

5.4.2 重载函数的调用 75

5.5 嵌套调用和递归调用 76

5.5.1 函数的嵌套调用 76

5.5.2 函数的递归调用 77

5.6 函数原型 82

5.7 auto函数与尾随返回类型 83

5.8 特殊参数 84

5.8.1 带缺省值的形参 84

5.8.2 可变参数 85

5.9 inline函数与constexpr 函数 87

5.9.1 inline函数 87

5.9.2 constexpr函数 87

5.10 作用域 88

5.10.1 局部作用域 88

5.10.2 文件作用域与全局作用域运算符 90

5.10.3 函数原型作用域 90

5.10.4 函数作用域 91

5.11 程序运行期存储区域 91

5.12 存储类 91

5.12.1 static变量与多文件项目 92

5.12.2 extern变量 94

5.12.3 thread_ local变量 95

5.12.4 存储类小结 96

5.13 编译预处理 96

5.13.1 包含文件 97

5.13.2 无参宏 98

5.13.3 有参宏 100

5.13.4 条件编译 103

5.13.5 条件编译示例 104

5.13.6 其他预处理指令 105

小结 106

练习题 107

第6章 数组与字符串 111

6.1 一维数组 111

6.1.1 一维数组的定义 111

6.1.2 一维数组的初始化 112

6.1.3 一维数组的访问 113

6.1.4 基于范围for语句 114

6.1.5 一维数组的应用 115

6.1.6 调用标准算法简化数组编程 119

6.2 二维数组 121

6.2.1 二维数组的定义 121

6.2.2 二维数组的初始化 121

6.2.3 二维数组的应用 122

6.3 数组与函数 124

6.4 容器vector与map 127

6.4.1 vector 127

6.4.2 map 129

6.4.3 初始化列表与统一初始化 131

6.5 字符数组与字符串 132

6.5.1 字符数组的定义 132

6.5.2 字符数组的初始化 133

6.5.3 字符数组的输入输出 134

6.5.4 字符数组的操作 136

6.6 字符串处理函数 137

6.6.1 字符数组处理函数 137

6.6.2 string类型 139

6.6.3 字符串应用示例 140

小结 142

练习题 142

第7章 结构、枚举、联合体 146

7.1 结构 146

7.1.1 结构类型的定义 146

7.1.2 说明结构变量 149

7.1.3 结构变量的初始化 149

7.1.4 结构变量的使用 150

7.1.5 结构的数组 152

7.1.6 结构中的静态成员 155

7.1.7 结构的嵌套定义 157

7.1.8 C++结构的构造函数与成员函数 157

7.2 位域 159

7.2.1 位域的定义 159

7.2.2 位域的使用 161

7.3 枚举 162

7.3.1 枚举类型及枚举变量 162

7.3.2 枚举的使用 163

7.3.3 强类型枚举 165

7.4 联合体 166

7.4.1 联合体类型的定义 166

7.4.2 联合体变量的说明及使用 167

7.4.3 非受限联合体 169

7.5 类型别名typedef与using 170

小结 171

练习题 172

第8章 指针和引用 175

8.1 指针及指针变量 175

8.1.1 指针概念与求址运算 175

8.1.2 指针变量的说明与初始化 177

8.1.3 指针的运算 178

8.1.4 用nullptr替代NULL 182

8.2 指针与结构 182

8.2.1 结构的指针 182

8.2.2 指针作为结构成员 184

8.3 指针与数组 186

8.3.1 用指针访问数组 186

8.3.2 指针与字符串 189

8.3.3 指针的数组 191

8.4 指针与函数 198

8.4.1 指针作为形参 198

8.4.2 函数返回指针 199

8.4.3 函数的指针 200

8.5 void指针与const指针 203

8.5.1 void指针 204

8.5.2 const指针 205

8.6 动态使用内存 206

8.6.1 new运算符 206

8.6.2 delete运算符 208

8.6.3 智能指针与垃圾回收GC 211

8.7 引用 213

8.7.1 左值引用 213

8.7.2 左值引用与数组、指针的关系 214

8.7.3 左值引用与函数 216

8.7.4 指针与左值引用的对比 220

8.7.5 右值引用&& 221

8.7.6 引用类型绑定关系 223

8.7.7 auto推导与decltype推导规则 224

8.8 Lambda表达式 226

8.8.1 语法构造 226

8.8.2 简单用法 228

8.8.3 嵌套L式与高阶函数 229

8.8.4 调用5TL算法 230

小结 231

练习题 232

第9章 类和对象 239

9.1 类 239

9.1.1 类的定义 239

9.1.2 类成员的可见性 241

9.1.3 类的数据成员 242

9.1 4类的成员函数 243

9.1.5 类与结构的区别 246

9.2 对象 247

9.2.1 对象的创建 247

9.2.2 访问对象的成员 248

9.2.3 类与对象的关系 249

9.3 this指针 249

9.4 类中的其他内容 250

小结 251

练习题 251

第10章 类的成员 253

10.1 构造函数 253

10.1.1 构造函数的定义 253

10.1.2 缺省构造函数 254

10.1.3 委托构造函数 254

10.2 析构函数 255

10.3 拷贝构造函数与拷贝赋值函数 257

10.3.1 拷贝构造函数 257

10.3.2 拷贝赋值函数 259

10.3.3 浅拷贝与深拷贝 261

10.3.4 用stnng替代char* 263

10.3.5 转换构造函数 263

10.4 移动构造函数与移动赋值函数 265

10.4.1 移动语义 265

10.4.2 移动构造函数 266

10.4.3 移动赋值函数 267

10.4.4 移动实例分析 267

10.5 特殊成员函数及其显式控制 270

10.5.1 特殊成员函数总结 270

10.5.2 特殊成员函数的显式控制 272

10.6 复合对象与成员对象 274

10.6.1 复合类的构造与析构 274

10.6.2 复合对象设计要点 275

10.7 对象数组 276

10.7.1 定义和使用 276

10.7.2 对象数组作为成员 277

10.8 静态成员 277

10.8.1 静态数据成员 277

10.8.2 静态成员函数 279

10.9 限定符 280

10.9.1 限定符const 280

10.9.2 限定符volatile 282

10.9.3 引用限定符 283

10.10 类成员的指针 284

10.10.1 数据成员的指针 284

10.10.2 成员函数的指针 286

10.11 线程对象thread 287

小结 290

练习题 290

第11章 类的继承 295

11.1 继承与派生 295

11.1.1 基类与派生类 295

11.1.2 派生类的定义与构成 296

11.1.3 继承方式与访问控制 297

11.2 派生类的构造和析构 299

11.2.1 派生类的构造函数 299

11.2.2 派生类继承构造函数 301

11.2.3 派生类的析构过程 302

11.3 二义性问题与支配规则 303

11.3.1 多继承造成的二义性 303

11.3.2 支配规则 304

11.3.3 导入基类成员 305

11.4 虚基类 306

11.4.1 共同基类造成的二义性 306

11.4.2 虚基类的说明 307

11.4.3 虚基类的例子 309

11.5 子类型关系 310

11.6 虚函数 313

11.6.1 虚函数定义和使用 313

11.6.2 成员函数中调用虚函数 316

11.6.3 构造函数中调用虚函数 317

11.6.4 虚析构函数 318

11.6.5 纯虚函数与抽象类 319

11.6.6 final函数与类 321

11.7 标量、平凡、标准布局与POD 322

11.8 字面类型与constexpr对象 324

11.9 继承性设计要点 325

小结 327

练习题 327

第12章 运算符重载 332

12.1 一般运算符重载 332

12.1.1 运算符重载函数 332

12.1.2 双目运算符的重载 333

12.1.3 单目运算符的重载 334

12.2 友元函数实现运算符 336

12.2.1 友元friend 336

12.2.2 友元运算符函数 337

12.2.3 用户定义字面值UDL 339

12.3 特殊运算符重载 341

12.3.1 类型转换函数 341

12.3.2 下标运算符 343

12.3.3 函数调用运算符 344

12.3.4 new/delete运算符 344

小结 345

练习题 346

第13章 模板与STL 348

13.1 模板的概念 348

13.2 函数模板 349

13.2.1 函数模板的定义 349

13.2.2 函数模板的使用 350

13.2.3 函数模板的显式特例化 353

13.2.4 函数模板与有参宏的区别 354

13.2.5 函数模板重载与SFINAE规则 354

13.2.6 模板正确实例化与静态断言 356

13.2.7 带缺省实参的函数模板 357

13.2.8 可变参量的函数模板 359

13.2.9 完美转发与引用折叠规则 360

13.2.10 auto函数推导返回类型 362

13.3 类模板与别名模板 364

13.3.1 类模板的定义 364

13.3.2 类模板的使用 365

13.3.3 显式特例化与部分特例化 368

13.3.4 友元模板 371

13.3.5 类模板的继承 374

13.3.6 带缺省实参的类模板 376

13.3.7 可变参量的类模板 376

13.3.8 嵌套类模板 377

13.3.9 别名模板 378

13.4 标准模板库STL 379

13.4.1 容器概念 379

13.4.2 迭代器 381

13.4.3 容器的共同成员类型和操作 382

13.4.4 算法 383

13.4.5 基于C++11简化编程 385

13.4.6 函数对象 386

13.4.7 vector, deque和list 387

13.4.8 set和multiset 390

13.4.9 map和multimap 393

13.5 命名空间 398

13.5.1 命名空间的定义 398

13.5.2 空间中成员的访问 399

13.5.3 inline命名空间 400

小结 401

练习题 401

第14章 输入输出流 404

14.1 概述 404

14.1.1 流 404

14.1.2 文件 405

14.1.3 缓冲 405

14.2 基本流类 405

14.2.1 基本流类体系 405

14.2.2 预定义标准对象 406

14.2.3 流的格式控制 407

14.2.4 流的错误处理 410

14.3 标准输入/输出 411

14.3.1 cin输入要点 411

14.3.2 输入操作的成员函数 412

14.3.3 cout输出要点 414

14.3.4 输出操作的成员函数 415

14.3.5 重载<<和>>运算符 415

14.4 文件流 416

14.4.1 文件概述 416

14.4.2 文件处理的一般过程 416

14.4.3 文件的打开与关闭 417

14.4.4 文本文件的使用 419

14.4.5 二进制文件的使用 422

14.4.6 文件的随机访问 425

小结 427

练习题 427

第15章 异常 429

15.1 异常的概念 429

15.2 异常类型的架构 431

15.3 异常处理语句 432

15.3.1 throw语句 432

15.3.2 try-catch语句 434

15.3.3 异常处理的例子 436

15.3.4 无异常noexcept 439

15.4 终止处理器 440

15.5 通用属性 441

小结 442

练习题 442

附录A ASCII码表 445

表A.1 常用ASCII码表 445

表A.2 ASCII控制字符 446

附录B 常用库函数 447

表B.1 运行库的功能分类 447

表B.2 运行库头文件 448

表B.3 标准C++头文件 449

表B.4 string类型<string> 450

表B.5 数学函数<math.h> 452

表B.6 C标准库<stdlib.h> 453

表B.7 内存函数<memory.h> 454

表B.8 时间函数<time.h>与<sys/timeb.h> 454

参考文献 456