• 学习C++20(中文版)
图书条目标准图
21年品牌 40万+商家 超1.5亿件商品

学习C++20(中文版)

124 5.2折 238 全新

仅1件

广东广州
认证卖家担保交易快速发货售后保障

作者[美]保罗·J.戴特尔(Paul J. Deitel)(美) 哈维·M.戴特尔(Harvey M. Deitel)著 周靖 译

出版社清华大学出版社

出版时间2023-05

版次1

装帧其他

货号59193685

上书时间2024-11-28

牧野书屋

六年老店
已实名 已认证 进店 收藏店铺

   商品详情   

品相描述:全新
图书标准信息
  • 作者 [美]保罗·J.戴特尔(Paul J. Deitel)(美) 哈维·M.戴特尔(Harvey M. Deitel)著 周靖 译
  • 出版社 清华大学出版社
  • 出版时间 2023-05
  • 版次 1
  • ISBN 9787302625438
  • 定价 238.00元
  • 装帧 其他
  • 开本 16开
  • 纸张 胶版纸
  • 页数 970页
  • 字数 1.4千字
【内容简介】
《学习C 20(中文版)》共18章5个附录,讨论了C 20的5大编程模型:程序化编程、函数式编程、面向对象编程、泛型编程和模板元编程。第I部分介绍基础知识,第II部分介绍容器、C 20范围、指针、字符串和文件,第III部分介绍现代面向对象编程和异常,第Ⅳ部分介绍泛型编程、模板、概念和模板元编程,第V部分介绍高级主题,包括模块、并行算法、并发和协程。 《学习C 20(中文版)》适合需要了解C 20新特性的程序员,包括零基础或有经验的C 程序员以及其他想要了解C 的程序员,也适合希望开课教C 20的老师。
【作者简介】
保罗·J.戴特尔(Paul J. Deitel)毕业于麻省理工学院(MIT),有42年计算机行业的工作经验。他是全球知名的编程语言培训师之一,自1992年以来一直在为软件开发人员讲授专业课程。他与哈维·M.戴特尔(Harvey M. Deitel)博士共同编写了全球最畅销的编程教材、专业书籍、视频和互动多媒体电子学习内容。
【目录】
第Ⅰ部分 编程基础

第1章 免费、流行的C 编译器 003

第2章 C 编程入门 025

第3章 控制语句(上) 045

第4章 控制语句(下) 077

第5章 函数和函数模板入门 113

第Ⅱ部分 数组、指针和字符串

第6章 数组、向量、范围和函数式编程 171

第7章 现代C 对指针的淡化 211

第8章 string、string_view、文本文件、CSV文件和正则表达式 247

第Ⅲ部分 面向对象程序设计

第9章 自定义类 303

第10章 OOP:继承和运行时多态性 379

第11章 操作符重载、拷贝/移动语义和智能指针 467

第12章 异常和对契约的展望 527

第Ⅳ部分 标准库容器、迭代器和算法

第13章 标准库容器和迭代器 571

第14章 标准库算法和C 20范围/视图 625

第Ⅴ部分 高级编程主题

第15章 模板、C 20“概念”和元编程 703

第16章 C 20模块:大规模开发 797

第17章 并行算法和并发性:高级观点 851

第18章 C 20协程 994

附录A 操作符优先级和分组 969

附录B 字符集 971

详细目录

第Ⅰ部分 编程基础

第1章 免费、流行的C 编译器

1.1 导读 004

1.2 试运行一个C 20应用程序 005

1.2.1 在Windows上用VS 2022社区版编译和运行C 20应用程序 005

1.2.2 在macOS上用Xcode编译和运行C 20应用程序 009

1.2.3 在Linux上用GNU C 运行C 20应用程序 013

1.2.4 在GCC Docker容器中编译和运行C 20应用程序 015

1.2.5 在Docker容器中使用clang 来编译和运行C 20应用程序 016

1.3 摩尔定律、多核处理器和并发编程 018

1.4 面向对象简单回顾 019

1.5 小结 021

第2章 C 编程入门

2.1 导读 026

2.2 第一个C 程序:显示单行文本 026

2.3 修改第一个C 程序 030

2.4 另一个C 程序:整数相加 031

2.5 算术运算 035

2.6 决策:相等性和关系操作符 036

2.7 对象自然案例学习:创建和使用标准库类string的对象 040

2.8 小结 044

第3章 控制语句(上)

3.1 导读 046

3.2 控制结构 046

3.2.1 顺序结构 046

3.2.2 选择语句 047

3.2.3 循环语句 048

3.2.4 控制语句小结 049

3.3 if选择语句 049

3.4 if…else双选语句 050

3.4.1 嵌套if…else语句 051

3.4.2 代码块 052

3.4.3 条件操作符( :) 053

3.5 while循环语句 053

3.6 计数器控制的循环 054

3.6.1 实现计数器控制的循环 054

3.6.2 整数除法和截断 056

3.7 哨兵值控制的循环 056

3.7.1 实现哨兵值控制的循环 057

3.7.2 基础类型之间的显式和隐式转换 059

3.7.3 格式化浮点数 060

3.8 嵌套控制语句 061

3.8.1 问题陈述 061

3.8.2 实现程序 062

3.8.3 用大括号初始化防止收缩转换 064

3.9 复合赋值操作符 065

3.10 递增和递减操作符 065

3.11 基本类型不可移植 068

3.12 对象自然案例学习:任意大小的整数 068

3.13 C 20:用format函数格式化文本 073

3.14 小结 075

第4章 控制语句(下)

4.1 导读 078

4.2 计数器控制的循环的本质 078

4.3 for循环语句 079

4.4 for循环的例子 081

4.5 应用程序:累加偶数整数 082

4.6 应用程序:复利计算 083

4.7 do…while循环语句 087

4.8 switch多选语句 088

4.9 使用带初始化器的C 17选择语句 094

4.10 break语句和continue语句 095

4.11 逻辑操作符 097

4.11.1 逻辑AND(&&)操作符 098

4.11.2 逻辑OR(||)操作符 098

4.11.3 短路求值 099

4.11.4 逻辑非(!)操作符 099

4.11.5 示例:生成逻辑操作符真值表 100

4.12 混淆相等性(==)和赋值(=)操作符 102

4.13 对象自然案例学习:使用miniz-cpp库读写ZIP文件8 103

4.14 用域宽和精度进行C 20文本格式化 108

4.15 小结 110

第5章 函数和函数模板入门

5.1 导读 114

5.2 C 程序组件 114

5.3 数学库函数 115

5.4 函数定义和函数原型 117

5.5 函数实参的求值顺序 120

5.6 函数原型和实参强制类型转换的有关注意事项 120

5.6.1 函数签名和函数原型 121

5.6.2 实参强制类型转换 121

5.6.3 实参提升规则和隐式转换 121

5.7 C 标准库头文件 123

5.8 案例学习:随机数生成 126

5.8.1 掷六面骰子 127

5.8.2 六面骰子掷6000万次 127

5.8.3 为给随机数生成器提供种子 129

5.8.4 用random_device为随机数生成器提供种子 131

5.9 案例学习:概率游戏,介绍有作用域的enum  131

5.10 作用域规则 137

5.11 内联函数 142

5.12 引用和引用参数 143

5.13 默认参数 146

5.14 一元作用域解析操作符 147

5.15 函数重载 148

5.16 函数模板 152

5.17 递归 155

5.18 递归示例:斐波那契数列 158

5.19 对比递归和循环 161

5.20 Lnfylun Lhqtomh Wjtz Qarcv: Qjwazkrplm xzz Xndmwwqhlz 163

5.21 小结 166

第Ⅱ部分 数组、指针和字符串

第6章 数组、向量、范围和函数式编程

6.1 导读 172

6.2 数组 172

6.3 声明数组 173

6.4 用循环初始化数组元素 173

6.5 用初始化器列表初始化数组 176

6.6 C 11基于范围的for和C 20带初始化器的基于范围的for 177

6.7 计算数组元素值并理解constexpr 180

6.8 累加数组元素 182

6.9 使用简陋的条形图以图形方式显示数组数据 182

6.10 数组元素作为计数器使用 184

6.11 使用数组来汇总调查结果 186

6.12 数组排序和查找 187

6.13 多维数组 189

6.14 函数式编程入门 194

6.14.1 做什么和怎么做 194

6.14.2 函数作为实参传给其他函数:理解lambda表达式 195

6.14.3 过滤器、映射和归约:理解C 20的“范围”库 197

6.15 对象自然案例学习:C 标准库类模板vector 201

6.16 小结 208

第7章 现代C 对指针的淡化

7.1 导读 212

7.2 声明和初始化指针变量 213

7.2.1 声明指针 214

7.2.2 初始化指针 214

7.2.3 C 11之前的空指针 214

7.3 指针操作符 214

7.3.1 取址(&)操作符 215

7.3.2 间接寻址(*)操作符 215

7.3.3 使用取址(&)和间接寻址(*)操作符 216

7.4 用指针传引用 217

7.5 内置数组 221

7.5.1 声明和访问内置数组 222

7.5.2 初始化内建数组 222

7.5.3 向函数传递内置数组 222

7.5.4 声明内置数组参数 223

7.5.5 C 11标准库函数begin和end 223

7.5.6 内置数组的限制 223

7.6 使用C 20 to_array将内置数组转换成std::array 224

7.7 为指针和它指向的数据使用const 225

7.7.1 指向非常量数据的非常量指针 226

7.7.2 指向常量数据的非常量指针 226

7.7.3 指向非常量数据的常量指针 227

7.7.4 指向常量数据的常量指针 228

7.8 sizeof操作符 229

7.9 指针表达式和指针算术 232

7.9.1 在指针上加减整数 232

7.9.2 从指针上减一个指针 233

7.9.3 指针赋值 234

7.9.4 不能解引用void* 234

7.9.5 指针比较 234

7.10 对象自然案例学习:C 20 span,连续容器元素的视图 234

7.11 理解基于指针的字符串 240

7.11.1 命令行参数 242

7.11.2 再论C 20的to_array函数 243

7.12 展望其他指针主题 244

7.13 小结 245

第8章 string、string_view、文本文件、CSV文件和正则表达式

8.1 导读 248

8.2 字符串赋值和连接 249

8.3 字符串比较 251

8.4 子串 253

8.5 交换字符串 254

8.6 收集string特征信息 254

8.7 在字符串中查找子串和字符 257

8.8 替换和删除字符串中的字符 260

8.9 在字符串中插入字符 262

8.10 C 11数值转换 263

8.11 C 17 string_view 264

8.12 文件和流 267

8.13 创建顺序文件 268

8.14 从顺序文件读取数据 271

8.15 C 14读取和写入引号文本 274

8.16 更新顺序文件 275

8.17 字符串流处理 276

8.18 原始字符串字面值 279

8.19 对象自然案例学习:读取和分析包含泰坦尼克号灾难数据的CSV文件 280

8.19.1 使用 rapidcsv 读取 CSV 文件的内容 280

8.19.2 读取和分析泰坦尼克号灾难数据集 282

8.20 对象自然案例学习:理解正则表达式 290

8.20.1 将完整字符串与模式相匹配 291

8.20.2 替换子串 296

8.20.3 查找匹配 296

8.21 小结 299

第Ⅲ部分 面向对象程序设计

第9章 自定义类

9.1 导读 304

9.2 体验Account对象 304

9.3 具有赋值和取值成员函数的Account类 306

9.3.1 类定义 306

9.3.2 访问说明符private和public 309

9.4 Account类:自定义构造函数 309

9.5 赋值和取值成员函数的软件工程优势 313

9.6 含有余额的Account类 314

9.7 Time类案例学习:分离接口与实现 318

9.7.1 类的接口 319

9.7.2 分离接口与实现 319

9.7.3 类定义 320

9.7.4 成员函数 321

9.7.5 在源代码文件中包含类的头文件 322

9.7.6 作用域解析操作符(::) 322

9.7.7 成员函数setTime和抛出异常 323

9.7.8 成员函数to24HourString和to12HourString 323

9.7.9 隐式内联的成员函数 324

9.7.10 成员函数与全局函数 324

9.7.11 使用Time类 324

9.7.12 对象的大小 326

9.8 编译和链接过程 326

9.9 类作用域以及对类成员的访问 327

9.10 访问函数和实用函数 328

9.11 Time类案例学习:带有默认参数的构造函数 329

9.11.1 Time类 329

9.11.2 重载构造函数和C 11委托构造函数 334

9.12 析构函数 335

9.13 什么时候调用构造函数和析构函数 335

9.14 Time类案例学习:返回到private数据成员的引用或指针时,须谨慎 339

9.15 默认赋值操作符 342

9.16 const对象和const成员函数 344

9.17 合成:对象作为类成员 346

9.18 友元函数和友元类 351

9.19 this指针 353

9.19.1 隐式和显式使用this指针访问对象的数据成员 354

9.19.2 使用this指针来实现级联函数调用 355

9.20 静态类成员:类级数据和成员函数 359

9.21 C 20中的聚合 364

9.21.1 初始化聚合 365

9.21.2 C 20:指定初始化器 365

9.22 对象自然案例学习:用JSON序列化 366

9.22.1 序列化由包含public数据的对象构成的vector 367

9.22.2 序列化由包含private数据的对象构成的vector 372

9.23 小结 374

第10章 OOP:继承和运行时多态性

10.1 导读 380

10.2 基类和派生类 382

10.2.1 CommunityMember类层次结构 383

10.2.2 Shape类层次结构和public继承 384

10.3 基类和派生类的关系 385

10.3.1 创建和使用SalariedEmployee类 385

10.3.2 创建SalariedEmployee/SalariedCommissionEmployee继承层次结构 388

10.4 派生类中的构造函数和析构函数 394

10.5 运行时多态性入门:多态性电子游戏 395

10.6 继承层次结构中对象之间的关系 396

10.6.1 从派生类对象调用基类函数 397

10.6.2 派生类指针指向基类对象 400

10.6.3 通过基类指针调用派生类成员函数 401

10.7 虚函数和虚析构函数 403

10.7.1 为什么虚函数这么有用? 403

10.7.2 声明虚函数 403

10.7.3 调用虚函数 403

10.7.4 SalariedEmployee层次结构中的虚函数 404

10.7.5 虚析构函数 408

10.7.6 final成员函数和类 408

10.8 抽象类和纯虚函数 409

10.8.1 纯虚函数 409

10.8.2 设备驱动程序:操作系统中的多态性 410

10.9 案例学习:使用运行时多态性的薪资系统 410

10.9.1 创建抽象基类Employee 411

10.9.2 创建派生的具体类SalariedEmployee 414

10.9.3 创建派生的具体类CommissionEmployee 416

10.9.4 演示运行时多态性处理 418

10.10 运行时多态性、虚函数和动态绑定的幕后机制 421

10.11 非虚接口(NVI)惯用法 425

10.12 藉由接口来编程,而不要藉由实现26 432

10.12.1 重新思考Employee层次结构:CompensationModel接口 434

10.12.2 Employee类 434

10.12.3 实现CompensationModel 436

10.12.4 测试新层次结构 439

10.12.5 依赖注入在设计上的优势 440

10.13 使用std::variant和std::visit实现运行时多态性 441

10.14 多继承 447

10.14.1 菱形继承 452

10.14.2 用虚基类继承消除重复的子对象 454

10.15 深入理解protected类成员 456

10.16 public、protected和private继承 457

10.17 更多运行时多态性技术和编译时多态性 458

10.17.1 其他运行时多态性技术 458

10.17.2 编译时(静态)多态性技术 460

10.17.3 其他多态性概念 461

10.18 小结 461

第11章 操作符重载、拷贝/移动语义和智能指针

11.1 导读 468

11.2 使用标准库string类的重载操作符 470

11.3 操作符重载基础 476

11.3.1 操作符不会自动重载 476

11.3.2 不能重载的操作符 476

11.3.3 不必重载的操作符 476

11.3.4 操作符重载的规则和限制 477

11.4 用new和delete进行动态内存管理(过时技术) 477

11.5 现代C 动态内存管理:RAII和智能指针 480

11.5.1 智能指针 480

11.5.2 演示unique_ptr 480

11.5.3 unique_ptr的所有权 482

11.5.4 指向内置数组的unique_ptr 482

11.6 MyArray案例学习:通过操作符重载来打造有价值的类 483

11.6.1 特殊成员函数 484

11.6.2 使用MyArray类 485

11.6.3 MyArray类定义 495

11.6.4 指定了MyArray大小的构造函数 496

11.6.5 C 11向构造函数传递一个大括号初始化器 497

11.6.6 拷贝构造函数和拷贝赋值操作符 498

11.6.7 移动构造函数和移动赋值操作符 502

11.6.8 析构函数 504

11.6.9 toString和size函数 505

11.6.10 重载相等性(==)和不相等(!=)操作符 506

11.6.11 重载下标([])操作符 508

11.6.12 重载一元bool转换操作符 509

11.6.13 重载前递增操作符 509

11.6.14 重载后递增操作符 510

11.6.15 重载加赋值操作符( =) 511

11.6.16 重载二元流提取(>>)和流插入(
点击展开 点击收起

   相关推荐   

—  没有更多了  —

以下为对购买帮助不大的评价

此功能需要访问孔网APP才能使用
暂时不用
打开孔网APP