C++  Primer中文版  第5版

下载地址 https://pan.baidu.com/s/1X1coefIGxZfKML04335I0A

扫码上面二维码关注公众号回复 100028获取分享码

本书目录构造如下:

第1章 开始1

1.1 编写一个简略的c++程序2

1.1.1 编译、运行程序3

1.2 初识输入输出5

1.3 正文简介8

1.4 控制流10

1.4.1 while语句10

1.4.2 for语句11

1.4.3 读取数量不定的输出数据13

1.4.4 if语句15

1.5 类简介17

1.5.1 sales_item类17

1.5.2 初识成员函数20

1.6 书店程序21

小结23

术语表23

第ⅰ局部 c++根底27

第2章 变量和根本类型29

2.1 根本内置类型30

.2.1.1 算术类型30

2.1.2 类型转换32

2.1.3 字面值常量35

2.2 变量38

2.2.1 变量定义38

2.2.2 变量申明和定义的关系41

2.2.3 标识符42

2.2.4 名字的作用域43

2.3 复合类型45

2.3.1 援用45

2.3.2 指针47

2.3.3 了解复合类型的申明51

2.4 const限定符53

2.4.1 const的援用54

2.4.2 指针和const56

2.4.3 顶层const57

2.4.4 constexpr和常量表达式58

2.5 解决类型60

2.5.1 类型别名60

2.5.2 auto类型说明符61

2.5.3 decltype类型批示符62

2.6 自定义数据结构64

2.6.1 定义sales_data类型64

2.6.2 应用sales_data类66

2.6.3 编写本人的头文件67

小结69

术语表69

第3章 字符串、向量和数组73

3.1 命名空间的using申明74

3.2 规范库类型string75

3.2.1 定义和初始化string对象76

3.2.2 string对象上的操作77

3.2.3 解决string对象中的字符81

3.3 规范库类型vector86

3.3.1 定义和初始化vector对象87

3.3.2 向vector对象中增加元素90

3.3.3 其余vector操作91

3.4 迭代器介绍95

3.4.1 应用迭代器95

3.4.2 迭代器运算99

3.5 数组101

3.5.1 定义和初始化内置数组101

3.5.2 拜访数组元素103

3.5.3 指针和数组105

3.5.4 c格调字符串109

3.5.5 与旧代码的接口111

3.6 多维数组112

小结117

术语表117

第4章 表达式119

4.1 根底120

4.1.1 基本概念120

4.1.2 优先级与结合律121

4.1.3 求值程序123

4.2 算术运算符124

4.3 逻辑和关系运算符126

4.4 赋值运算符129

4.5 递增和递加运算符131

4.6 成员拜访运算符133

4.7 条件运算符134

4.8 位运算符135

4.9 sizeof运算符139

4.10 逗号运算符140

4.11 类型转换141

4.11.1 算术转换142

4.11.2 其余隐式类型转换143

4.11.3 显式转换144

4.12 运算符优先级表147

小结149

术语表149

第5章 语句153

5.1 简略语句154

5.2 语句作用域155

5.3 条件语句156

5.3.1 if语句156

5.3.2 switch语句159

5.4 迭代语句165

5.4.1 while语句165

5.4.2 传统的for语句166

5.4.3 范畴for语句168

5.4.4 do while语句169

5.5 跳转语句170

5.5.1 break语句170

5.5.2 continue语句171

5.5.3 goto语句172

5.6 try语句块和异样解决172

5.6.1 throw表达式173

5.6.2 try语句块174

5.6.3 规范异样176

小结178

术语表178

第6章 函数181

6.1 函数根底182

6.1.1 部分对象184

6.1.2 函数申明186

6.1.3 分离式编译186

6.2 参数传递187

6.2.1 传值参数187

6.2.2 传援用参数188

6.2.3 const形参和实参190

6.2.4 数组形参193

6.2.5 main:解决命令行选项196

6.2.6 含有可变形参的函数197

6.3 返回类型和return语句199

6.3.1 无返回值函数200

6.3.2 有返回值函数200

6.3.3 返回数组指针205

6.4 函数重载206

6.4.1 重载与作用域210

6.5 非凡用处语言个性211

6.5.1 默认实参211

6.5.2 内联函数和constexpr函数213

6.5.3 调试帮忙215

6.6 函数匹配217

6.6.1 实参类型转换219

6.7 函数指针221

小结225

术语表225

第7章 类227

7.1 定义抽象数据类型228

7.1.1 设计sales_data类228

7.1.2 定义改良的sales_data类230

7.1.3 定义类相干的非成员函数234

7.1.4 构造函数235

7.1.5 拷贝、赋值和析构239

7.2 访问控制与封装240

7.2.1 友元241

7.3 类的其余个性243

7.3.1 类成员再探243

7.3.2 返回*this的成员函数246

7.3.3 类类型249

7.3.4 友元再探250

7.4 类的作用域253

7.4.1 名字查找与类的作用域254

7.5 构造函数再探257

7.5.1 构造函数初始值列表258

7.5.2 委托构造函数261

7.5.3 默认构造函数的作用262

7.5.4 隐式的类类型转换263

7.5.5 聚合类266

7.5.6 字面值常量类267

7.6 类的动态成员268

小结273

术语表273

第ⅱ部 c++规范库275

第8章 io库277

8.1 io类278

8.1.1 io对象无拷贝或赋值279

8.1.2 条件状态279

8.1.3 治理输入缓冲281

8.2 文件输入输出283

8.2.1 应用文件流对象284

8.2.2 文件模式286

8.3 string流287

8.3.1 应用istringstream287

8.3.2 应用ostringstream289

小结290

术语表290

第9章 程序容器291

9.1 程序容器概述292

9.2 容器库概览294

9.2.1 迭代器296

9.2.2 容器类型成员297

9.2.3 begin和end成员298

9.2.4 容器定义和初始化299

9.2.5 赋值和swap302

9.2.6 容器大小操作304

9.2.7 关系运算符304

9.3 程序容器操作305

9.3.1 向程序容器增加元素305

9.3.2 拜访元素309

9.3.3 删除元素311

9.3.4 非凡的forward_list操作312

9.3.5 扭转容器大小314

9.3.6 容器操作可能使迭代器生效315

9.4 vector对象是如何增长的317

9.5 额定的string操作320

9.5.1 结构string的其余办法321

9.5.2 扭转string的其余办法322

9.5.3 string搜寻操作325

9.5.4 compare函数327

9.5.5 数值转换327

9.6 容器适配器329

小结332

术语表332

第10章 泛型算法335

10.1 概述336

10.2 初识泛型算法338

10.2.1 只读算法338

10.2.2 写容器元素的算法339

10.2.3 重排容器元素的算法342

10.3 定制操作344

10.3.1 向算法传递函数344

10.3.2 lambda表达式345

10.3.3 lambda捕捉和返回349

10.3.4 参数绑定354

10.4 再探迭代器357

10.4.1 插入迭代器358

10.4.2 iostream迭代器359

10.4.3 反向迭代器363

10.5 泛型算法构造365

10.5.1 5类迭代器365

10.5.2 算法形参模式367

10.5.3 算法命名标准368

10.6 特定容器算法369

小结371

术语表371

第11章 关联容器373

11.1 应用关联容器374

11.2 关联容器概述376

11.2.1 定义关联容器376

11.2.2 关键字类型的要求378

11.2.3 pair类型379

11.3 关联容器操作381

11.3.1 关联容器迭代器382

11.3.2 增加元素383

11.3.3 删除元素386

11.3.4 map的下标操作387

11.3.5 拜访元素388

11.3.6 一个单词转换的map391

11.4 无序容器394

小结397

术语表397

第12章 动态内存399

12.1 动态内存与智能指针400

12.1.1 shared_ptr类400

12.1.2 间接治理内存407

12.1.3 shared_ptr和new联合应用412

12.1.4 智能指针和异样415

12.1.5 unique_ptr417

12.1.6 weak_ptr420

12.2 动静数组423

12.2.1 new和数组423

12.2.2 allocator类427

12.3 应用规范库:文本查问程序430

12.3.1 文本查问程序设计430

12.3.2 文本查问程序类的定义432

小结436

术语表436

第ⅲ局部 类设计者的工具437

第13章 拷贝管制439

13.1 拷贝、赋值与销毁440

13.1.1 拷贝构造函数440

13.1.2 拷贝赋值运算符443

13.1.3 析构函数444

13.1.4 三/五法令447

13.1.5 应用=default449

13.1.6 阻止拷贝449

13.2 拷贝管制和资源管理452

13.2.1 行为像值的类453

13.2.2 定义行为像指针的类455

13.3 替换操作457

13.4 拷贝管制示例460

13.5 动态内存治理类464

13.6 对象挪动470

13.6.1 右值援用471

13.6.2 挪动构造函数和挪动赋值运算符473

13.6.3 右值援用和成员函数481

小结486

术语表486

第14章 操作重载与类型转换489

14.1 基本概念490

14.2 输出和输入运算符494

14.2.1 重载输入运算符[[494

14.2.2 重载输出运算符]]495

14.3 算术和关系运算符497

14.3.1 相等运算符497

14.3.2 关系运算符498

14.4 赋值运算符499

14.5 下标运算符501

14.6 递增和递加运算符502

14.7 成员拜访运算符504

14.8 函数调用运算符506

14.8.1 lambda是函数对象507

14.8.2 规范库定义的函数对象509

14.8.3 可调用对象与function511

14.9 重载、类型转换与运算符514

14.9.1 类型转换运算符514

14.9.2 防止有二义性的类型转换517

14.9.3 函数匹配与重载运算符521

小结523

术语表523

第15章 面向对象程序设计525

15.1 oop:概述526

15.2 定义基类和派生类527

15.2.1 定义基类528

15.2.2 定义派生类529

15.2.3 类型转换与继承534

15.3 虚函数536

15.4 形象基类540

15.5 访问控制与继承542

15.6 继承中的类作用域547

15.7 构造函数与拷贝管制551

15.7.1 虚析构函数552

15.7.2 合成拷贝管制与继承552

15.7.3 派生类的拷贝管制成员554

15.7.4 继承的构造函数557

15.8 容器与继承558

15.8.1 编写basket类559

15.9 文本查问程序再探562

15.9.1 面向对象的解决方案563

15.9.2 query_base类和query类567

15.9.3 派生类568

15.9.4 eval函数571

小结575

术语表575

第16章 模板与泛型编程577

16.1 定义模板578

16.1.1 函数模板578

16.1.2 类模板583

16.1.3 模板参数592

16.1.4 成员模板595

16.1.5 管制实例化597

16.1.6 效率与灵活性599

16.2 模板实参推断600

16.2.1 类型转换与模板类型参数601

16.2.2 函数模板显式实参603

16.2.3 尾置返回类型与类型转换604

16.2.4 函数指针和实参推断607

16.2.5 模板实参推断和援用608

16.2.6 了解std::move610

16.2.7 转发612

16.3 重载与模板614

16.4 可变参数模板618

16.4.1 编写可变参数函数模板620

16.4.2 包扩大621

16.4.3 转发参数包622

16.5 模板特例化624

小结630

术语表630

第ⅳ局部 高级主题633

第17章 规范库非凡设施635

17.1 tuple类型636

17.1.1 定义和初始化tuple637

17.1.2 应用tuple返回多个值638

17.2 bitset类型640

17.2.1 定义和初始化bitset641

17.2.2 bitset操作643

17.3 正则表达式645

17.3.1 应用正则表达式库646

17.3.2 匹配与regex迭代器类型650

17.3.3 应用子表达式653

17.3.4 应用regex_replace657

17.4 随机数659

17.4.2 其余随机数散布663

bernoulli_distribution类665

17.5 io库再探666

17.5.1 格式化输出与输入666

17.5.2 未格式化的输出/输入操作673

17.5.3 流随机拜访676

小结680

术语表680

第18章 用于大型程序的工具683

18.1 异样解决684

18.1.1 抛出异样684

18.1.2 捕捉异样687

18.1.3 函数try语句块与构造函数689

18.1.4 noexcept异样阐明690

18.1.5 异样类档次693

18.2 命名空间695

18.2.1 命名空间定义695

18.2.2 应用命名空间成员701

18.2.3 类、命名空间与作用域705

18.2.4 重载与命名空间708

18.3 多重继承与虚继承710

18.3.1 多重继承711

18.3.2 类型转换与多个基类713

18.3.3 多重继承下的类作用域715

18.3.4 虚继承717

18.3.5 构造函数与虚继承720

小结722

术语表722

第19章 非凡工具与技术725

19.1 管制内存调配726

19.1.1 重载new和delete726

19.1.2 定位new表达式729

19.2 运行时类型辨认730

19.2.1 dynamic_cast运算符730

19.2.2 typeid运算符732

19.2.3 应用rtti733

19.2.4 type_info类735

19.3 枚举类型736

19.4 类成员指针739

19.4.1 数据成员指针740

19.4.2 成员函数指针741

19.4.3 将成员函数用作可调用对象744

19.5 嵌套类746

19.6 union:一种节俭空间的类749

19.7 部分类754

19.8 固有的不可移植的个性755

19.8.1 位域756

19.8.2 volatile限定符757

19.8.3 链接批示:extern "c"758

小结762

术语表762

附录a 规范库765

a.1 规范库名字和头文件766

a.2 算法概览770

a.2.1 查找对象的算法771

a.2.2 其余只读算法772

a.2.3 二分搜索算法772

a.2.4 写容器元素的算法773

a.2.5 划分与排序算法775

a.2.6 通用重排操作776

a.2.7 排列算法778

a.2.8 有序序列的汇合算法778

a.2.9 最小值和最大值779

a.2.10 数值算法780

a.3 随机数781

a.3.1 随机数散布781

a.3.2 随机数引擎783

c++11的新个性

2.1.1 long long类型31

2.2.1 列表初始化39

2.3.2 nullptr常量48

2.4.4 constexpr变量59

2.5.1 类型别名申明60

2.5.2 auto类型批示符61

2.5.3 decltype类型批示符62

2.6.1 类内初始化65

3.2.2 应用auto或decltype缩写类型79

3.2.3 范畴for语句82

3.3 定义vector对象的vector(向量的向量)87

3.3.1 vector对象的列表初始化88

3.4.1 容器的cbegin和cend函数98

3.5.3 规范库begin和end函数106

3.6 应用auto和decltype简化申明115

4.2 除法的舍入规定125

4.4 用大括号突围的值列表赋值129

4.9 将sizeof用于类成员139

5.4.3 范畴for语句168

6.2.6 规范库initializer_list类197

6.3.2 列表初始化返回值203

6.3.3 定义尾置返回类型206

6.3.3 应用decltype简化返回类型定义

6.5.2 constexpr函数214

7.1.4 应用=default生成默认构造函数237

7.3.1 类对象成员的类内初始化246

7.5.2 委托构造函数261

7.5.6 constexpr构造函数268

8.2.1 用string对象解决文件名284

9.1 array和forward_list容器293

9.2.3 容器的cbegin和cend函数298

9.2.4 容器的列表初始化300

9.2.5 容器的非成员函数swap303

9.3.1 容器insert成员的返回类型308

9.3.1 容器的emplace成员的返回类型308

9.4 shrink_to_fit318

9.5.5 string的数值转换函数327

10.3.2 lambda表达式346

10.3.3 lambda表达式中的尾置返回类型353

10.3.4 规范库bind函数354

11.2.1 关联容器的列表初始化377

11.2.3 列表初始化pair的返回类型380

11.3.2 pair的列表初始化384

11.4 无序容器394

12.1 智能指针400

12.1.1 shared_ptr类

12.1.2 动态分配对象的列表初始化407

12.1.2 auto和动态分配408

12.1.5 unique_ptr类417

12.1.6 weak_ptr类420

12.2.1 范畴for语句不能利用于动态分配数组424

12.2.1 动态分配数组的列表初始化424

12.2.1 auto不能用于调配数组424

12.2.2 allocator::construct可应用任意构造函数428

13.1.5 将=default用于拷贝管制成员449

13.1.6 应用=default阻止拷贝类对象449

13.5 用挪动类对象代替拷贝类对象469

13.6.1 右值援用471

13.6.1 规范库move函数472

13.6.2 挪动构造函数和挪动赋值473

13.6.2 挪动构造函数通常应该是noexcept473

13.6.2 挪动迭代器480

13.6.3 援用限定成员函数483

14.8.3 function类模板512

14.9.1 explicit类型转换运算符516

15.2.2 虚函数的override批示符530

15.2.2 通过定义类为final来阻止继承533

15.3 虚函数的override和final批示符538

15.7.2 删除的拷贝管制和继承553

15.7.4 继承的构造函数557

16.1.2 申明模板类型形参为友元590

16.1.2 模板类型别名590

16.1.3 模板函数的默认模板参数594

16.1.5 实例化的显式管制597

16.2.3 模板函数与尾置返回类型605

16.2.5 援用折叠规定609

16.2.6 用static_cast将左值转换为右值612

16.2.7 规范库forward函数614

16.4 可变参数模板618

16.4 sizeof...运算符619

16.4.3 可变参数模板与转发622

17.1 规范库tuple类模板636

17.2.2 新的bitset运算643

17.3 正则表达式库645

17.4 随机数库659

17.5.1 浮点数格局管制670

18.1.4 noexcept异样批示符690

18.1.4 noexcept运算符691

18.2.1 内联名字空间699

18.3.1 继承的构造函数和多重继承712

19.3 有作用域的enum736

19.3 阐明类型用于保留enum对象738

19.3 enum的提前申明738

19.4.3 规范库mem_fn类模板746

19.6 类类型的联结成员751