万本电子书0元读

万本电子书0元读

顶部广告

C++实战:核心技术与*佳实践电子书

1.现代C 主线 含C 98 11 14 17 20 23,适合初中级发者 2.作者背景深厚 专研C 编程30年,助你突破C 痛与难 3.关注核心特性 聚焦高频使用的语言特性,重讲解语言惯用法 4.面向实战发 针对实际应用场景下的常见问题,提供解决方案 5.讲解通俗易懂 多图多表多代码,内容简单易读,代码方便实现

售       价:¥

纸质售价:¥49.90购买纸书

3人正在读 | 0人评论 6.6

作       者:吴咏炜 著

出  版  社:人民邮电出版社有限公司

出版时间:2024-12-01

字       数:29.7万

所属分类: 科技 > 计算机/网络 > 计算机教材

温馨提示:数字商品不支持退换货,不提供源文件,不支持导出打印

为你推荐

  • 读书简介
  • 目录
  • 累计评论(条)
  • 读书简介
  • 目录
  • 累计评论(条)
这是一本面向实战的现代C 指南,由作者结合30余年C 编程经验倾力造。书中聚焦发者日常高频使用的语言特性,重讲解惯用法(而非罗列语言里的琐碎细节),展示代码示例及其技术原理,旨在帮助大家又快又好地使用C 。 作者精选了对象生存期与RAII、移动语义、标准模板库(STL)、视图、智能指针、错误处理、并发与异步编程等核心主题,深浅出地剖析语言特性,并针对实际发中的常见问题提供解决方案。 本书面向C C 程序员(特别是遇到困难、希望深理解并优化C 发的读者),以及其他需要提升C 编程能力的发者。<br/>【推荐语】<br/>1.现代C 主线 含C 98 11 14 17 20 23,适合初中级发者 2.作者背景深厚 专研C 编程30年,助你突破C 痛与难 3.关注核心特性 聚焦高频使用的语言特性,重讲解语言惯用法 4.面向实战发 针对实际应用场景下的常见问题,提供解决方案 5.讲解通俗易懂 多图多表多代码,内容简单易读,代码方便实现<br/>【作者】<br/>吴咏炜 国内 C 专家、Boolan 首席技术咨询师,曾任英特尔亚太研发中心资深系统架构师,毕业于复旦大学物理系,拥有 30 年 C C 系统级软件发和架构经验。 目前从事 C 相关的技术咨询和培训工作,为华为、大疆等多家公司提供过服务。工作涉及 C C 语言、软件架构、安全软件发、性能优化、代码重用、源软件等多方面。 源软件作品包括:mozi、nvwa、libunibreak 等。 专栏或者翻译作品包括:极客时间专栏《现代 C 编程实战》(累计学习人数超过 3.5 万人),图书翻译作品《编程大师访谈录》《C Core Guidelines 解析》,论文翻译作品《在纷繁多变的世界里茁壮成长:C 2006—2020》,等等。<br/>
目录展开

推荐序

前言

本书特色与目标读者

引用和拓展阅读

中文术语

一些约定

致谢

绪论

为什么要学习 C++

C++ 的特点

有最好的语言吗?

如何学习 C++

第 1 章 C 和 C++ 基础

1.1 C 基础知识

1.1.1 代码组织

1.1.2 预处理

1.1.3 函数

1.1.4 语句和表达式

1.1.5 对象和变量

1.1.6 基础类型

1.1.7 指针

1.1.8 枚举

1.1.9 数组

1.1.10 结构体

1.1.11 联合体

1.2 C++ 基础知识

1.2.1 C++ 是 C 的超集吗?

1.2.2 引用

1.2.3 重载

1.2.4 名空间

1.2.5 类

1.2.6 面向对象编程

1.2.7 运行期类型识别

1.2.8 异常

1.2.9 模板

1.2.10 具名转型

1.3 小结

第 2 章 对象生存期和 RAII

2.1 C++ 对象的存储期和生存期

2.1.1 静态对象的生存期

2.1.2 动态对象的生存期

2.1.3 自动对象的生存期

2.2 RAII 惯用法

2.3 小结

第 3 章 值类别和移动语义

3.1 引用语义和值语义

3.2 值类别

3.2.1 左值

3.2.2 右值

3.3 移动语义

3.3.1 提供移动操作的重载

3.3.2 移动对代码风格的影响

3.3.3 返回值优化

3.4 值类别的其他细节

3.4.1 右值引用变量的值类别

3.4.2 转发引用和完美转发*

3.5 三法则、五法则和零法则

3.6 小结

第 4 章 模板和自动类型推导

4.1 模板概要

4.2 函数模板

4.2.1 模板的定义

4.2.2 模板的实例化

4.2.3 模板参数推导和 auto 自动类型推导

4.3 类模板

4.3.1 模板的定义

4.3.2 模板的显式特化

4.3.3 类模板的成员函数和类的成员函数模板

4.4 变量模板

4.5 别名模板

4.6 其他类型推导

4.6.1 类模板参数推导

4.6.2 decltype

4.6.3 后置返回类型声明和返回类型自动推导

4.6.4 声明变量和初始化的不同方式*

4.6.5 结构化绑定

4.7 小结

第 5 章 字符串

5.1 字符串概述

5.2 string 的基本特点

5.2.1 类容器特性

5.2.2 字符串特性

5.3 basic_string 模板

5.4 小结

第 6 章 函数对象

6.1 什么是函数对象

6.1.1 函数对象类

6.1.2 高阶函数

6.1.3 函数的指针和引用

6.2 lambda 表达式

6.2.1 基本用法和原理

6.2.2 捕获

6.2.3 泛型 lambda 表达式

6.3 使用 function 对象

6.4 小结

第 7 章 标准容器

7.1 标准模板库和容器

7.2 序列容器

7.2.1 vector

7.2.2 deque

7.2.3 list

7.2.4 forward_list

7.2.5 array

7.3 关联容器

7.3.1 排序问题

7.3.2 关联容器的特性

7.3.3 通透比较器

7.4 无序关联容器

7.4.1 哈希函数对象

7.4.2 无序关联容器的接口

7.4.3 无序关联容器的底层细节

7.5 容器适配器

7.5.1 queue

7.5.2 stack

7.5.3 priority_queue

7.6 性能说明

7.7 小结

第 8 章 迭代器

8.1 基本概念

8.1.1 迭代器的初步示例

8.1.2 ostream_range.h 对被输出对象的要求

8.2 迭代器的类别

8.2.1 迭代器

8.2.2 输入迭代器

8.2.3 前向迭代器

8.2.4 双向迭代器

8.2.5 随机访问迭代器

8.2.6 连续迭代器

8.2.7 输出迭代器

8.3 基于范围的 for 循环

8.3.1 范围表达式的生存期问题*

8.3.2 键-值对容器的遍历

8.3.3 哨兵类型*

8.4 小结

第 9 章 标准算法

9.1 算法概述

9.2 一些常用算法

9.2.1 映射

9.2.2 归约

9.2.3 过滤

9.2.4 生成

9.2.5 复制

9.2.6 搜索

9.2.7 排序

9.2.8 其他

9.3 并行算法

9.4 C++20 的范围算法*

9.5 小结

第 10 章 视图

10.1 视图概述

10.2 string_view

10.2.1 基本用法

10.2.2 视图的生存期问题

10.2.3 string_view 和 string

10.2.4 string_view 的哈希*

10.3 span

10.3.1 基本用法

10.3.2 一些技术细节

10.3.3 gsl::span 的性能问题

10.4 C++20 里的视图*

10.4.1 映射

10.4.2 过滤

10.4.3 反转

10.4.4 取子元素

10.4.5 管道和管道的性能

10.4.6 其他视图

10.5 小结

第 11 章 智能指针

11.1 智能指针概述

11.2 唯一所有权的智能指针 unique_ptr

11.2.1 基本使用场景和示例

11.2.2 一些技术细节

11.3 共享所有权的智能指针 shared_ptr

11.3.1 基本使用场景和示例

11.3.2 弱指针 weak_ptr

11.3.3 引用计数的性能问题

11.4 智能指针的传递方式

11.5 删除器的行为定制

11.6 小结

第 12 章 现代 C++ 的一些重要改进

12.1 类

12.1.1 类数据成员的默认初始化

12.1.2 override 和 final

12.2 静态断言

12.3 字面量

12.3.1 用户定义字面量

12.3.2 二进制字面量

12.4 数字分隔符

12.5 constexpr 变量和函数*

12.5.1 字面类型

12.6 枚举类和指定枚举的底层类型

12.6.1 byte 类型

12.7 多元组 tuple

12.7.1 利用 tuple 的快速比较

12.8 时间库 chrono

12.8.1 C++20 前的 chrono 库

12.8.2 C++20 的 chrono 库改进*

12.9 随机数库 random

12.10 正则表达式库 regex

12.11 小结

第 13 章 契约和异常

13.1 契约式设计

13.1.1 契约式设计的优点、应用场景和实现方式

13.1.2 先决条件

13.1.3 后置条件

13.1.4 不变量

13.2 异常

13.2.1 不使用异常的 C 风格错误处理

13.2.2 使用异常的代码示例

13.2.3 如何处理异常

13.2.4 不用异常的理由

13.2.5 不用异常的后果

13.3 小结

第 14 章 optional/variant 和错误处理

14.1 不使用异常的错误处理

14.2 optional

14.3 variant

14.3.1 访问 variant

14.4 expected

14.5 标准错误码

14.5.1 文件系统库里面的错误处理

14.5.2 集成自定义错误码

14.6 返回值优化问题

14.7 小结

第 15 章 传递对象的方式

15.1 传统的对象传递方式

15.2 性能优化的对象传递方式

15.2.1 针对移动的优化

15.2.2 该不该用值传参?

15.2.3 “不可教授”的极致性能传参方式*

15.2.4 字符串的特殊处理

15.3 小结

第 16 章 并发编程

16.1 并发编程概述

16.2 线程和锁

16.2.1 线程和锁的基本示例

16.2.2 thread 的析构问题

16.2.3 数据竞争示例

16.2.4 锁的更多细节

16.3 通知机制

16.4 期值

16.4.1 async 和 future

16.4.2 promise 和 future

16.4.3 packaged_task 和 future

16.5 内存序和原子量

16.5.1 执行顺序问题

16.5.2 获得-释放语义

16.5.3 atomic

16.6 线程局部对象

16.7 线程安全的容器?

16.7.1 标准容器的线程安全性

16.7.2 同步访问的模板工具

16.7.3 支持并发访问的容器

16.8 小结

第 17 章 异步编程

17.1 异步编程的基本概念

17.2 Asio

17.2.1 异步执行

17.2.2 异步回调

17.2.3 同步网络程序

17.2.4 异步网络程序

17.3 C++20 协程

17.3.1 使用协程的异步网络程序

17.3.2 使用协程的生成器*

17.3.3 有栈和无栈协程*

17.4 小结

第 18 章 探索 C++ 的工具

18.1 编译器

18.1.1 主流编译器简介

18.1.2 优化选项

18.1.3 告警选项

18.1.4 编译器的其他重要功能

18.1.5 标准库的调试模式

18.2 Clang 系列工具

18.2.1 Clang-Format

18.2.2 Clang-Tidy

18.2.3 clangd

18.3 运行期检查工具

18.3.1 valgrind

18.3.2 AddressSanitizer(ASan)

18.3.3 UndefinedBehaviorSanitizer(UBSan)

18.3.4 ThreadSanitizer(TSan)

18.4 Compiler Explorer

18.5 小结

结束语

推荐阅读材料

C 语言

STL 和泛型编程

C++ 标准库

并发编程

最佳实践

历史和演化

看完了

累计评论(条) 个书友正在讨论这本书 发表评论

发表评论

发表评论,分享你的想法吧!

买过这本书的人还买过

读了这本书的人还在读

回顶部