图书介绍

C++程序设计语言 第1-3部分【2025|PDF下载-Epub版本|mobi电子书|kindle百度云盘下载】

C++程序设计语言 第1-3部分
  • (美)本贾尼·斯特劳斯特鲁普(Bjarne Stroustrup)著 著
  • 出版社: 北京:机械工业出版社
  • ISBN:9787111539414
  • 出版时间:2016
  • 标注页数:726页
  • 文件大小:121MB
  • 文件页数:750页
  • 主题词:C语言-程序设计

PDF下载


点此进入-本书在线PDF格式电子书下载【推荐-云解压-方便快捷】直接下载PDF格式图书。移动端-PC端通用
种子下载[BT下载速度快]温馨提示:(请使用BT下载软件FDM进行下载)软件下载地址页直链下载[便捷但速度慢]  [在线试读本书]   [在线获取解压码]

下载说明

C++程序设计语言 第1-3部分PDF格式电子书版下载

下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。

建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!

(文件页数 要大于 标注页数,上中下等多册电子书除外)

注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具

图书目录

第一部分 引言2

第1章 致读者2

1.1 本书结构2

1.1.1 引言2

1.1.2 基本特性3

1.1.3 抽象机制4

1.1.4 标准库5

1.1.5 例子和参考文献5

1.2 C++的设计7

1.2.1 程序设计风格8

1.2.2 类型检查11

1.2.3 C兼容性12

1.2.4 语言、库和系统12

1.3 学习C++14

1.3.1 用C++编程15

1.3.2 对C++程序员的建议16

1.3.3 对C程序员的建议16

1.3.4 对Java程序员的建议17

1.4 C++的历史18

1.4.1 大事年表19

1.4.2 早期的C++19

1.4.3 1998标准21

1.4.4 2011标准23

1.4.5 C++的用途26

1.5 建议27

1.6 参考文献28

第2章 C++概览:基础知识32

2.1 引言32

2.2 基本概念33

2.2.1 Hello,World!33

2.2.2 类型、变量和算术运算34

2.2.3 常量36

2.2.4 检验和循环37

2.2.5 指针、数组和循环38

2.3 用户自定义类型40

2.3.1 结构41

2.3.2 类42

2.3.3 枚举43

2.4 模块化44

2.4.1 分离编译45

2.4.2 名字空间46

2.4.3 错误处理47

2.5 附记50

2.6 建议50

第3章 C++概览:抽象机制51

3.1 引言51

3.2 类51

3.2.1 具体类型52

3.2.2 抽象类型56

3.2.3 虚函数58

3.2.4 类层次59

3.3 拷贝和移动62

3.3.1 拷贝容器63

3.3.2 移动容器64

3.3.3 资源管理66

3.3.4 抑制操作66

3.4 模板67

3.4.1 参数化类型67

3.4.2 函数模板69

3.4.3 函数对象69

3.4.4 可变参数模板71

3.4.5 别名72

3.5 建议73

第4章 C++概览:容器与算法74

4.1 标准库74

4.1.1 标准库概述75

4.1.2 标准库头文件与名字空间75

4.2 字符串77

4.3 I/O流78

4.3.1 输出78

4.3.2 输入79

4.3.3 用户自定义类型的I/O80

4.4 容器81

4.4.1 vector81

4.4.2 list84

4.4.3 map85

4.4.4 unordered_map86

4.4.5 容器概述86

4.5 算法87

4.5.1 使用迭代器88

4.5.2 迭代器类型90

4.5.3 流迭代器91

4.5.4 谓词93

4.5.5 算法概述93

4.5.6 容器算法94

4.6 建议94

第5章 C++概览:并发与实用功能96

5.1 引言96

5.2 资源管理96

5.2.1 unique_ptr与shared_ptr97

5.3 并发99

5.3.1 任务和thread99

5.3.2 传递参数100

5.3.3 返回结果100

5.3.4 共享数据101

5.3.5 任务通信103

5.4 小工具组件106

5.4.1 时间106

5.4.2 类型函数107

5.4.3 pair和tuple109

5.5 正则表达式110

5.6 数学计算111

5.6.1 数学函数和算法111

5.6.2 复数111

5.6.3 随机数112

5.6.4 向量算术113

5.6.5 数值限制113

5.7 建议114

第二部分 基本功能116

第6章 类型与声明116

6.1 ISO C++标准116

6.1.1 实现117

6.1.2 基本源程序字符集118

6.2 类型118

6.2.1 基本类型119

6.2.2 布尔值119

6.2.3 字符类型121

6.2.4 整数类型124

6.2.5 浮点数类型126

6.2.6 前缀和后缀127

6.2.7 void128

6.2.8 类型尺寸128

6.2.9 对齐130

6.3 声明131

6.3.1 声明的结构133

6.3.2 声明多个名字134

6.3.3 名字134

6.3.4 作用域136

6.3.5 初始化138

6.3.6 推断类型:auto和decltype()141

6.4 对象和值144

6.4.1 左值和右值144

6.4.2 对象的生命周期145

6.5 类型别名146

6.6 建议147

第7章 指针、数组与引用148

7.1 引言148

7.2 指针148

7.2.1 void149

7.2.2 nullptr150

7.3 数组150

7.3.1 数组的初始化器152

7.3.2 字符串字面值常量152

7.4 数组中的指针155

7.4.1 数组漫游156

7.4.2 多维数组158

7.4.3 传递数组159

7.5 指针与const161

7.6 指针与所有权163

7.7 引用163

7.7.1 左值引用164

7.7.2 右值引用167

7.7.3 引用的引用169

7.7.4 指针与引用170

7.8 建议172

第8章 结构、联合与枚举173

8.1 引言173

8.2 结构173

8.2.1 struct的布局175

8.2.2 struct的名字176

8.2.3 结构与类177

8.2.4 结构与数组178

8.2.5 类型等价180

8.2.6 普通旧数据180

8.2.7 域182

8.3 联合183

8.3.1 联合与类185

8.3.2 匿名union186

8.4 枚举188

8.4.1 enum class188

8.4.2 普通的enum191

8.4.3 未命名的enum192

8.5 建议193

第9章 语句194

9.1 引言194

9.2 语句概述194

9.3 声明作为语句195

9.4 选择语句196

9.4.1 if语句196

9.4.2 switch语句198

9.4.3 条件中的声明200

9.5 循环语句201

9.5.1 范围for语句201

9.5.2 for语句202

9.5.3 while语句203

9.5.4 do语句203

9.5.5 退出循环204

9.6 goto语句204

9.7 注释与缩进205

9.8 建议207

第10章 表达式208

10.1 引言208

10.2 一个桌面计算器示例208

10.2.1 分析器209

10.2.2 输入213

10.2.3 底层输入216

10.2.4 错误处理217

10.2.5 驱动程序217

10.2.6 头文件218

10.2.7 命令行参数218

10.2.8 关于风格220

10.3 运算符概述220

10.3.1 结果224

10.3.2 求值顺序224

10.3.3 运算符优先级225

10.3.4 临时对象226

10.4 常量表达式227

10.4.1 符号化常量229

10.4.2 常量表达式中的const229

10.4.3 字面值常量类型229

10.4.4 引用参数230

10.4.5 地址常量表达式231

10.5 隐式类型转换231

10.5.1 提升231

10.5.2 类型转换232

10.5.3 常用的算术类型转换234

10.6 建议235

第11章 选择适当的操作236

11.1 其他运算符236

11.1.1 逻辑运算符236

11.1.2 位逻辑运算符236

11.1.3 条件表达式238

11.1.4 递增与递减238

11.2 自由存储240

11.2.1 内存管理241

11.2.2 数组243

11.2.3 获取内存空间244

11.2.4 重载new245

11.3 列表247

11.3.1 实现模型248

11.3.2 限定列表249

11.3.3 未限定列表249

11.4 lambda表达式251

11.4.1 实现模型251

11.4.2 lambda的替代品252

11.4.3 捕获254

11.4.4 调用与返回257

11.4.5 lambda的类型257

11.5 显式类型转换258

11.5.1 构造259

11.5.2 命名转换261

11.5.3 C风格的转换262

11.5.4 函数形式的转换262

11.6 建议263

第12章 函数264

12.1 函数声明264

12.1.1 为什么使用函数265

12.1.2 函数声明的组成要件265

12.1.3 函数定义266

12.1.4 返回值267

12.1.5 inline函数269

12.1.6 constexpr函数269

12.1.7 [[noreturn]]函数271

12.1.8 局部变量272

12.2 参数传递273

12.2.1 引用参数273

12.2.2 数组参数275

12.2.3 列表参数277

12.2.4 数量未定的参数278

12.2.5 默认参数281

12.3 重载函数282

12.3.1 自动重载解析283

12.3.2 重载与返回类型284

12.3.3 重载与作用域285

12.3.4 多实参解析285

12.3.5 手动重载解析286

12.4 前置与后置条件286

12.5 函数指针288

12.6 宏292

12.6.1 条件编译294

12.6.2 预定义宏295

12.6.3 编译指令296

12.7 建议296

第13章 异常处理297

13.1 错误处理297

13.1.1 异常298

13.1.2 传统的错误处理299

13.1.3 渐进决策300

13.1.4 另一种视角看异常301

13.1.5 何时不应使用异常302

13.1.6 层次化错误处理303

13.1.7 异常与效率304

13.2 异常保障305

13.3 资源管理307

13.3.1 finally310

13.4 强制不变式311

13.5 抛出与捕获异常315

13.5.1 抛出异常315

13.5.2 捕获异常318

13.5.3 异常与线程324

13.6 vector的实现324

13.6.1 一个简单的vector325

13.6.2 显式地表示内存328

13.6.3 赋值331

13.6.4 改变尺寸332

13.7 建议335

第14章 名字空间337

14.1 组合问题337

14.2 名字空间338

14.2.1 显式限定339

14.2.2 using声明340

14.2.3 using指示341

14.2.4 参数依赖查找342

14.2.5 名字空间是开放的344

14.3 模块化和接口345

14.3.1 名字空间作为模块346

14.3.2 实现348

14.3.3 接口和名字349

14.4 组合使用名字空间351

14.4.1 便利性与安全性351

14.4.2 名字空间别名352

14.4.3 组合名字空间352

14.4.4 组合与选择353

14.4.5 名字空间和重载354

14.4.6 版本控制356

14.4.7 名字空间嵌套358

14.4.8 无名名字空间359

14.4.9 C头文件359

14.5 建议360

第15章 源文件与程序362

15.1 分离编译362

15.2 链接363

15.2.1 文件内名字365

15.2.2 头文件366

15.2.3 单一定义规则368

15.2.4 标准库头文件369

15.2.5 链接非C++代码370

15.2.6 链接和函数指针372

15.3 使用头文件373

15.3.1 单头文件组织373

15.3.2 多头文件组织376

15.3.3 包含保护380

15.4 程序381

15.4.1 非局部变量初始化381

15.4.2 初始化和并发382

15.4.3 程序终止383

15.5 建议384

第三部分 抽象机制386

第16章 类386

16.1 引言386

16.2 类基础387

16.2.1 成员函数388

16.2.2 默认拷贝389

16.2.3 访问控制389

16.2.4 class和struct390

16.2.5 构造函数391

16.2.6 explicit构造函数393

16.2.7 类内初始化器395

16.2.8 类内函数定义395

16.2.9 可变性396

16.2.10 自引用399

16.2.11 成员访问400

16.2.12 static成员401

16.2.13 成员类型403

16.3 具体类403

16.3.1 成员函数406

16.3.2 辅助函数408

16.3.3 重载运算符410

16.3.4 具体类的重要性410

16.4 建议411

第17章 构造、清理、拷贝和移动413

17.1 引言413

17.2 构造函数和析构函数415

17.2.1 构造函数和不变式415

17.2.2 析构函数和资源416

17.2.3 基类和成员析构函数417

17.2.4 调用构造函数和析构函数418

17.2.5 virtual析构函数419

17.3 类对象初始化420

17.3.1 不使用构造函数进行初始化420

17.3.2 使用构造函数进行初始化421

17.3.3 默认构造函数424

17.3.4 初始化器列表构造函数425

17.4 成员和基类初始化429

17.4.1 成员初始化429

17.4.2 基类初始化器431

17.4.3 委托构造函数431

17.4.4 类内初始化器432

17.4.5 static成员初始化434

17.5 拷贝和移动435

17.5.1 拷贝435

17.5.2 移动441

17.6 生成默认操作444

17.6.1 显式声明默认操作444

17.6.2 默认操作445

17.6.3 使用默认操作446

17.6.4 使用delete删除的函数449

17.7 建议451

第18章 运算符重载452

18.1 引言452

18.2 运算符函数453

18.2.1 二元和一元运算符454

18.2.2 运算符的预置含义455

18.2.3 运算符与用户自定义类型456

18.2.4 传递对象456

18.2.5 名字空间中的运算符457

18.3 复数类型459

18.3.1 成员和非成员运算符459

18.3.2 混合模式运算460

18.3.3 类型转换461

18.3.4 字面值常量463

18.3.5 访问函数464

18.3.6 辅助函数465

18.4 类型转换466

18.4.1 类型转换运算符466

18.4.2 explicit类型转换运算符467

18.4.3 二义性468

18.5 建议469

第19章 特殊运算符471

19.1 引言471

19.2 特殊运算符471

19.2.1 取下标471

19.2.2 函数调用472

19.2.3 解引用473

19.2.4 递增和递减475

19.2.5 分配和释放477

19.2.6 用户自定义字面值常量478

19.3 字符串类481

19.3.1 必备操作481

19.3.2 访问字符482

19.3.3 类的表示483

19.3.4 成员函数485

19.3.5 辅助函数487

19.3.6 应用String489

19.4 友元490

19.4.1 发现友元491

19.4.2 友元与成员492

19.5 建议493

第20章 派生类495

20.1 引言495

20.2 派生类496

20.2.1 成员函数498

20.2.2 构造函数和析构函数499

20.3 类层次500

20.3.1 类型域500

20.3.2 虚函数502

20.3.3 显式限定504

20.3.4 覆盖控制505

20.3.5 using基类成员508

20.3.6 返回类型放松511

20.4 抽象类512

20.5 访问控制514

20.5.1 protected成员517

20.5.2 访问基类518

20.5.3 using声明与访问控制519

20.6 成员指针520

20.6.1 函数成员指针520

20.6.2 数据成员指针522

20.6.3 基类和派生类成员523

20.7 建议523

第21章 类层次524

21.1 引言524

21.2 设计类层次524

21.2.1 实现继承525

21.2.2 接口继承527

21.2.3 替代实现方式529

21.2.4 定位对象创建532

21.3 多重继承533

21.3.1 多重接口533

21.3.2 多重实现类533

21.3.3 二义性解析535

21.3.4 重复使用基类538

21.3.5 虚基类539

21.3.6 重复基类与虚基类544

21.4 建议546

第22章 运行时类型信息547

22.1 引言547

22.2 类层次导航547

22.2.1 dynamic_cast548

22.2.2 多重继承551

22.2.3 static_cast和dynamic_cast552

22.2.4 恢复接口553

22.3 双重分发和访客557

22.3.1 双重分发557

22.3.2 访客559

22.4 构造和析构561

22.5 类型识别561

22.5.1 扩展类型信息563

22.6 RTTI的使用和误用564

22.7 建议565

第23章 模板566

23.1 引言和概述566

23.2 一个简单的字符串模板568

23.2.1 定义模板569

23.2.2 模板实例化571

23.3 类型检查571

23.3.1 类型等价572

23.3.2 错误检测573

23.4 类模板成员574

23.4.1 数据成员574

23.4.2 成员函数575

23.4.3 成员类型别名575

23.4.4 static成员575

23.4.5 成员类型576

23.4.6 成员模板577

23.4.7 友元580

23.5 函数模板582

23.5.1 函数模板实参583

23.5.2 函数模板实参推断584

23.5.3 函数模板重载586

23.6 模板别名590

23.7 源码组织591

23.7.1 链接593

23.8 建议594

第24章 泛型程序设计595

24.1 引言595

24.2 算法和提升596

24.3 概念599

24.3.1 发现概念599

24.3.2 概念和约束602

24.4 具体化概念604

24.4.1 公理607

24.4.2 多实参概念607

24.4.3 值概念608

24.4.4 约束检查609

24.4.5 模板定义检查610

24.5 建议612

第25章 特例化613

25.1 引言613

25.2 模板参数和实参614

25.2.1 类型作为实参614

25.2.2 值作为实参615

25.2.3 操作作为实参616

25.2.4 模板作为实参618

25.2.5 默认模板实参619

25.3 特例化621

25.3.1 接口特例化623

25.3.2 主模板624

25.3.3 特例化顺序625

25.3.4 函数模板特例化626

25.4 建议628

第26章 实例化629

26.1 引言629

26.2 模板实例化630

26.2.1 何时需要实例化630

26.2.2 手工控制实例化631

26.3 名字绑定632

26.3.1 依赖性名字633

26.3.2 定义点绑定635

26.3.3 实例化点绑定636

26.3.4 多实例化点638

26.3.5 模板和名字空间639

26.3.6 过于激进的ADL639

26.3.7 来自基类的名字641

26.4 建议643

第27章 模板和类层次645

27.1 引言645

27.2 参数化和类层次646

27.2.1 生成类型647

27.2.2 模板类型转换649

27.3 类模板层次650

27.3.1 模板作为接口651

27.4 模板参数作为基类652

27.4.1 组合数据结构652

27.4.2 线性化类层次655

27.5 建议660

第28章 元编程661

28.1 引言661

28.2 类型函数663

28.2.1 类型别名665

28.2.2 类型谓词666

28.2.3 选择函数668

28.2.4 萃取668

28.3 控制结构670

28.3.1 选择670

28.3.2 迭代和递归673

28.3.3 何时使用元编程674

28.4 条件定义:Enable_if675

28.4.1 使用Enable_if676

28.4.2 实现Enable_if678

28.4.3 Enable_if与概念678

28.4.4 更多Enable_if例子679

28.5 一个编译时列表:Tuple681

28.5.1 一个简单的输出函数683

28.5.2 元素访问684

28.5.3 make_tuple686

28.6 可变参数模板686

28.6.1 一个类型安全的printf()687

28.6.2 技术细节689

28.6.3 转发691

28.6.4 标准库tuple692

28.7 国际标准单位例子694

28.7.1 Unit695

28.7.2 Quantitv696

28.7.3 Unit字面值常量697

28.7.4 工具函数698

28.8 建议700

第29章 一个矩阵设计701

29.1 引言701

29.1.1 Matrix的基本使用701

29.1.2 对Matrix的要求703

29.2 Matrix模板704

29.2.1 构造和赋值705

29.2.2 下标和切片706

29.3 Matrix算术运算708

29.3.1 标量运算709

29.3.2 加法710

29.3.3 乘法711

29.4 Matrix实现712

29.4.1 slice()713

29.4.2 Matrix切片713

29.4.3 Matrix_ref714

29.4.4 Matrix列表初始化715

29.4.5 Matrix访问717

29.4.6 零维Matrix719

29.5 求解线性方程组720

29.5.1 经典高斯消去法721

29.5.2 旋转722

29.5.3 测试723

29.5.4 熔合运算723

29.6 建议725

热门推荐