技术教育社区
www.teccses.org

C++实战:核心技术与最佳实践

封面

作者:吴咏炜 著

页数:344

出版社:人民邮电出版社

出版日期:2024

ISBN:9787115657695

电子书格式:pdf/epub/txt

网盘下载地址:下载C++实战:核心技术与最佳实践

内容简介

这是一本面向实战的现代C++指南,由作者结合30余年C++编程经验倾力打造。书中聚焦开发者日常高频使用的语言特性,重点讲解惯用法(而非罗列语言里的琐碎细节),展示代码示例及其技术原理,旨在帮助大家又快又好地使用C++。

作者精选了对象生存期与RAII、移动语义、标准模板库(STL)、视图、智能指针、错误处理、并发与异步编程等核心主题,深入浅出地剖析语言特性,并针对实际开发中的常见问题提供解决方案。

本书面向C/C++程序员(特别是遇到困难、希望深入理解并优化C++开发的读者),以及其他需要提升C++编程能力的开发者。

作者简介

吴咏炜国内 C 专家、Boolan 首席技术咨询师,曾任英特尔亚太研发中心资深系统架构师,毕业于复旦大学物理系,拥有 30 年 C C 系统级软件开发和架构经验。目前从事 C 相关的技术咨询和培训工作,为华为、大疆等多家公司提供过服务。工作涉及 C C 语言、软件架构、安全软件开发、性能优化、代码重用、开源软件等多方面。开源软件作品包括:mozi、nvwa、libunibreak 等。吴咏炜国内 C 专家、Boolan 首席技术咨询师,曾任英特尔亚太研发中心资深系统架构师,毕业于复旦大学物理系,拥有 30 年 C C 系统级软件开发和架构经验。目前从事 C 相关的技术咨询和培训工作,为华为、大疆等多家公司提供过服务。工作涉及 C C 语言、软件架构、安全软件开发、性能优化、代码重用、开源软件等多方面。开源软件作品包括:mozi、nvwa、libunibreak 等。专栏或者翻译作品包括:极客时间专栏《现代 C 编程实战》(累计学习人数超过 3.5 万人),图书翻译作品《编程大师访谈录》《C Core Guidelines 解析》,论文翻译作品《在纷繁多变的世界里茁壮成长:C 2006—2020》,等等。

本书特色

1.现代C 主线
含C 98 11 14 17 20 23,适合初中级开发者

2.作者背景深厚
专研C 编程30年,助你突破C 痛点与难点

3.关注核心特性
聚焦高频使用的语言特性,重点讲解语言惯用法

4.面向实战开发
针对实际应用场景下的常见问题,提供解决方案

5.讲解通俗易懂
多图多表多代码,内容简单易读,代码方便实现

目录

推荐序vii前言ix致谢xiv绪论xv第 1 章C 和 C 基础11.1C 基础知识11.1.1代码组织11.1.2预处理21.1.3函数31.1.4语句和表达式41.1.5对象和变量51.1.6基础类型61.1.7指针7推荐序vii前言ix致谢xiv绪论xv第 1 章C 和 C 基础11.1C 基础知识11.1.1代码组织11.1.2预处理21.1.3函数31.1.4语句和表达式41.1.5对象和变量51.1.6基础类型61.1.7指针71.1.8枚举71.1.9数组81.1.10结构体91.1.11联合体91.2C 基础知识101.2.1C 是 C 的超集吗?101.2.2引用121.2.3重载141.2.4名空间161.2.5类171.2.6面向对象编程231.2.7运行期类型识别251.2.8异常251.2.9模板271.2.10具名转型281.3小结29第 2 章对象生存期和 RAII302.1C 对象的存储期和生存期302.1.1静态对象的生存期302.1.2动态对象的生存期322.1.3自动对象的生存期362.2RAII 惯用法422.3小结45第 3 章值类别和移动语义463.1引用语义和值语义463.2值类别483.2.1左值483.2.2右值493.3移动语义513.3.1提供移动操作的重载513.3.2移动对代码风格的影响533.3.3返回值优化553.4值类别的其他细节593.4.1右值引用变量的值类别593.4.2转发引用和完美转发最603.5三法则、五法则和零法则623.6小结65第 4 章模板和自动类型推导664.1模板概要664.2函数模板674.2.1模板的定义674.2.2模板的实例化684.2.3模板参数推导和 auto 自动类型推导694.3类模板734.3.1模板的定义734.3.2模板的显式特化734.3.3类模板的成员函数和类的成员函数模板754.4变量模板764.5别名模板764.6其他类型推导774.6.1类模板参数推导774.6.2decltype774.6.3后置返回类型声明和返回类型自动推导784.6.4声明变量和初始化的不同方式最794.6.5结构化绑定824.7小结83第 5 章字符串845.1字符串概述845.2string 的基本特点855.2.1类容器特性855.2.2字符串特性875.3basic_string 模板925.4小结93第 6 章函数对象946.1什么是函数对象946.1.1函数对象类946.1.2高阶函数956.1.3函数的指针和引用956.2lambda 表达式966.2.1基本用法和原理966.2.2捕获976.2.3泛型 lambda 表达式1006.3使用 function 对象1006.4小结102第 7 章标准容器1037.1标准模板库和容器1037.2序列容器1047.2.1vector1047.2.2deque1117.2.3list1127.2.4forward_list1147.2.5array1157.3关联容器1177.3.1排序问题1177.3.2关联容器的特性1207.3.3通透比较器1247.4无序关联容器1267.4.1哈希函数对象1267.4.2无序关联容器的接口1287.4.3无序关联容器的底层细节1287.5容器适配器1307.5.1queue1307.5.2stack1317.5.3priority_queue1327.6性能说明1337.7小结133第 8 章迭代器1348.1基本概念1348.1.1迭代器的初步示例1348.1.2ostream_range.h 对被输出对象的要求1368.2迭代器的类别1378.2.1迭代器1388.2.2输入迭代器1408.2.3前向迭代器1408.2.4双向迭代器1418.2.5随机访问迭代器1418.2.6连续迭代器1428.2.7输出迭代器1428.3基于范围的 for 循环1438.3.1范围表达式的生存期问题最1468.3.2键?C值对容器的遍历1468.3.3哨兵类型最1478.4小结149第 9 章标准算法1509.1算法概述1509.2一些常用算法1509.2.1映射1509.2.2归约1519.2.3过滤1529.2.4生成1549.2.5复制1559.2.6搜索1579.2.7排序1599.2.8其他1609.3并行算法1629.4C 20 的范围算法最1639.5小结166第 10 章视图16710.1视图概述16710.2string_view16710.2.1基本用法16810.2.2视图的生存期问题16910.2.3string_view 和 string17010.2.4string_view 的哈希最17210.3span17210.3.1基本用法17210.3.2一些技术细节17310.3.3gsl::span 的性能问题17510.4C 20 里的视图最17510.4.1映射17610.4.2过滤17610.4.3反转17610.4.4取子元素17710.4.5管道和管道的性能17710.4.6其他视图17810.5小结179第 11 章智能指针18011.1智能指针概述18011.2唯一所有权的智能指针 unique_ptr18011.2.1基本使用场景和示例18011.2.2一些技术细节18211.3共享所有权的智能指针 shared_ptr18311.3.1基本使用场景和示例18311.3.2弱指针 weak_ptr18411.3.3引用计数的性能问题18511.4智能指针的传递方式18611.5删除器的行为定制18711.6小结189第 12 章现代 C 的一些重要改进19012.1类19012.1.1类数据成员的默认初始化19012.1.2override 和 final19112.2静态断言19312.3字面量19412.3.1用户定义字面量19412.3.2二进制字面量19712.4数字分隔符19812.5constexpr 变量和函数最19912.5.1字面类型20012.6枚举类和指定枚举的底层类型20112.6.1byte 类型20212.7多元组 tuple20312.7.1利用 tuple 的快速比较20412.8时间库 chrono20512.8.1C 20 前的 chrono 库20512.8.2C 20 的 chrono 库改进最20812.9随机数库 random21012.10正则表达式库 regex21212.11小结215第 13 章契约和异常21613.1契约式设计21613.1.1契约式设计的优点、应用场景和实现方式21713.1.2先决条件21913.1.3后置条件22213.1.4不变量22413.2异常22513.2.1不使用异常的 C 风格错误处理22613.2.2使用异常的代码示例22913.2.3如何处理异常23113.2.4不用异常的理由23413.2.5不用异常的后果23613.3小结238第 14 章optional variant 和错误处理23914.1不使用异常的错误处理23914.2optional24014.3variant24214.3.1访问 variant24414.4expected24614.5标准错误码24914.5.1文件系统库里面的错误处理24914.5.2集成自定义错误码25114.6返回值优化问题25314.7小结255第 15 章传递对象的方式25615.1传统的对象传递方式25615.2性能优化的对象传递方式25815.2.1针对移动的优化25815.2.2该不该用值传参?25915.2.3“不可教授”的极致性能传参方式最26415.2.4字符串的特殊处理26615.3小结267第 16 章并发编程26816.1并发编程概述26816.2线程和锁26916.2.1线程和锁的基本示例27016.2.2thread 的析构问题27116.2.3数据竞争示例27216.2.4锁的更多细节27316.3通知机制27416.4期值27816.4.1async 和 future27816.4.2promise 和 future27916.4.3packaged_task 和 future28016.5内存序和原子量28116.5.1执行顺序问题28116.5.2获得?C释放语义28616.5.3atomic28816.6线程局部对象29216.7线程安全的容器?29616.7.1标准容器的线程安全性29616.7.2同步访问的模板工具29716.7.3支持并发访问的容器29916.8小结300第 17 章异步编程30117.1异步编程的基本概念30117.2Asio30217.2.1异步执行30217.2.2异步回调30517.2.3同步网络程序30617.2.4异步网络程序30917.3C 20协程31317.3.1使用协程的异步网络程序31317.3.2使用协程的生成器最31617.3.3有栈和无栈协程最31917.4小结321第 18 章探索 C 的工具32218.1编译器32218.1.1主流编译器简介32218.1.2优化选项32518.1.3告警选项32618.1.4编译器的其他重要功能32718.1.5标准库的调试模式32818.2Clang 系列工具32918.2.1Clang-Format32918.2.2Clang-Tidy33118.2.3clangd33318.3运行期检查工具33318.3.1valgrind33318.3.2AddressSanitizer(ASan)33318.3.3UndefinedBehaviorSanitizer(UBSan)33418.3.4ThreadSanitizer(TSan)33518.4Compiler Explorer33518.5小结336结束语337推荐阅读材料338索引340

赞助用户下载地址

立即下载

(解压密码:www.teccses.org)

Article Title:《C++实战:核心技术与最佳实践》
Article link:https://www.teccses.org/27586.html