1.现代C++主线
含C++98/11/14/17/20/23,适合初中级开发者
2.作者背景深厚
专研C++编程30年,助你突破C++痛点与难点
3.关注核心特性
聚焦高频使用的语言特性,重点讲解语言惯用法
4.面向实战开发
针对实际应用场景下的常见问题,提供解决方案
5.讲解通俗易懂
多图多表多代码,内容简单易读,代码方便实现
网站首页 软件下载 游戏下载 翻译软件 电子书下载 电影下载 电视剧下载 教程攻略
书名 | C++实战:核心技术与最佳实践 |
分类 | 教育考试-考试-计算机类 |
作者 | 吴咏炜 |
出版社 | 人民邮电出版社 |
下载 | |
简介 | 编辑推荐 1.现代C++主线 含C++98/11/14/17/20/23,适合初中级开发者 2.作者背景深厚 专研C++编程30年,助你突破C++痛点与难点 3.关注核心特性 聚焦高频使用的语言特性,重点讲解语言惯用法 4.面向实战开发 针对实际应用场景下的常见问题,提供解决方案 5.讲解通俗易懂 多图多表多代码,内容简单易读,代码方便实现 内容推荐 这是一本面向实战的现代C++指南,由作者结合30余年C++编程经验倾力打造。书中聚焦开发者日常高频使用的语言特性,重点讲解惯用法(而非罗列语言里的琐碎细节),展示代码示例及其技术原理,旨在帮助大家又快又好地使用C++。 作者精选了对象生存期与RAII、移动语义、标准模板库(STL)、视图、智能指针、错误处理、并发与异步编程等核心主题,深入浅出地剖析语言特性,并针对实际开发中的常见问题提供解决方案。 本书面向C/C++程序员(特别是遇到困难、希望深入理解并优化C++开发的读者),以及其他需要提升C++编程能力的开发者。 目录 推荐序\tvii 前言\tix 致谢\txiv 绪论\txv 第 1 章\tC 和 C++ 基础\t1 1.1\tC 基础知识\t1 1.1.1\t代码组织\t1 1.1.2\t预处理\t2 1.1.3\t函数\t3 1.1.4\t语句和表达式\t4 1.1.5\t对象和变量\t5 1.1.6\t基础类型\t6 1.1.7\t指针\t7 1.1.8\t枚举\t7 1.1.9\t数组\t8 1.1.10\t结构体\t9 1.1.11\t联合体\t9 1.2\tC++ 基础知识\t10 1.2.1\tC++ 是 C 的超集吗?\t10 1.2.2\t引用\t12 1.2.3\t重载\t14 1.2.4\t名空间\t16 1.2.5\t类\t17 1.2.6\t面向对象编程\t23 1.2.7\t运行期类型识别\t25 1.2.8\t异常\t25 1.2.9\t模板\t27 1.2.10\t具名转型\t28 1.3\t小结\t29 第 2 章\t对象生存期和 RAII\t30 2.1\tC++ 对象的存储期和生存期\t30 2.1.1\t静态对象的生存期\t30 2.1.2\t动态对象的生存期\t32 2.1.3\t自动对象的生存期\t36 2.2\tRAII 惯用法\t42 2.3\t小结\t45 第 3 章\t值类别和移动语义\t46 3.1\t引用语义和值语义\t46 3.2\t值类别\t48 3.2.1\t左值\t48 3.2.2\t右值\t49 3.3\t移动语义\t51 3.3.1\t提供移动操作的重载\t51 3.3.2\t移动对代码风格的影响\t53 3.3.3\t返回值优化\t55 3.4\t值类别的其他细节\t59 3.4.1\t右值引用变量的值类别\t59 3.4.2\t转发引用和完美转发*\t60 3.5\t三法则、五法则和零法则\t62 3.6\t小结\t65 第 4 章\t模板和自动类型推导\t66 4.1\t模板概要\t66 4.2\t函数模板\t67 4.2.1\t模板的定义\t67 4.2.2\t模板的实例化\t68 4.2.3\t模板参数推导和 auto 自动类型推导\t69 4.3\t类模板\t73 4.3.1\t模板的定义\t73 4.3.2\t模板的显式特化\t73 4.3.3\t类模板的成员函数和类的成员函数模板\t75 4.4\t变量模板\t76 4.5\t别名模板\t76 4.6\t其他类型推导\t77 4.6.1\t类模板参数推导\t77 4.6.2\tdecltype\t77 4.6.3\t后置返回类型声明和返回类型自动推导\t78 4.6.4\t声明变量和初始化的不同方式*\t79 4.6.5\t结构化绑定\t82 4.7\t小结\t83 第 5 章\t字符串\t84 5.1\t字符串概述\t84 5.2\tstring 的基本特点\t85 5.2.1\t类容器特性\t85 5.2.2\t字符串特性\t87 5.3\tbasic_string 模板\t92 5.4\t小结\t93 第 6 章\t函数对象\t94 6.1\t什么是函数对象\t94 6.1.1\t函数对象类\t94 6.1.2\t高阶函数\t95 6.1.3\t函数的指针和引用\t95 6.2\tlambda 表达式\t96 6.2.1\t基本用法和原理\t96 6.2.2\t捕获\t97 6.2.3\t泛型 lambda 表达式\t100 6.3\t使用 function 对象\t100 6.4\t小结\t102 第 7 章\t标准容器\t103 7.1\t标准模板库和容器\t103 7.2\t序列容器\t104 7.2.1\tvector\t104 7.2.2\tdeque\t111 7.2.3\tlist\t112 7.2.4\tforward_list\t114 7.2.5\tarray\t115 7.3\t关联容器\t117 7.3.1\t排序问题\t117 7.3.2\t关联容器的特性\t120 7.3.3\t通透比较器\t124 7.4\t无序关联容器\t126 7.4.1\t哈希函数对象\t126 7.4.2\t无序关联容器的接口\t128 7.4.3\t无序关联容器的底层细节\t128 7.5\t容器适配器\t130 7.5.1\tqueue\t130 7.5.2\tstack\t131 7.5.3\tpriority_queue\t132 7.6\t性能说明\t133 7.7\t小结\t133 第 8 章\t迭代器\t134 8.1\t基本概念\t134 8.1.1\t迭代器的初步示例\t134 8.1.2\tostream_range.h 对被输出对象的要求\t136 8.2\t迭代器的类别\t137 8.2.1\t迭代器\t138 8.2.2\t输入迭代器\t140 8.2.3\t前向迭代器\t140 8.2.4\t双向迭代器\t141 8.2.5\t随机访问迭代器\t141 8.2.6\t连续迭代器\t142 8.2.7\t输出迭代器\t142 8.3\t基于范围的 for 循环\t143 8.3.1\t范围表达式的生存期问题*\t146 8.3.2\t键–值对容器的遍历\t146 8.3.3\t哨兵类型*\t147 8.4\t小结\t149 第 9 章\t标准算法\t150 9.1\t算法概述\t150 9.2\t一些常用算法\t150 9.2.1\t映射\t150 9.2.2\t归约\t151 9.2.3\t过滤\t152 9.2.4\t生成\t154 9.2.5\t复制\t155 9.2.6\t搜索\t157 9.2.7\t排序\t159 9.2.8\t其他\t160 9.3\t并行算法\t162 9.4\tC++20 的范围算法*\t163 9.5\t小结\t166 第 10 章\t视图\t167 10.1\t视图概述\t167 10.2\tstring_view\t167 10.2.1\t基本用法\t168 10.2.2\t视图的生存期问题\t169 10.2.3\tstring_view 和 string\t170 10.2.4\tstring_view 的哈希*\t172 10.3\tspan\t172 10.3.1\t基本用法\t172 10.3.2\t一些技术细节\t173 10.3.3\tgsl::span 的性能问题\t175 10.4\tC++20 里的视图*\t175 10.4.1\t映射\t176 10.4.2\t过滤\t176 10.4.3\t反转\t176 10.4.4\t取子元素\t177 10.4.5\t管道和管道的性能\t177 10.4.6\t其他视图\t178 10.5\t小结\t179 第 11 章\t智能指针\t180 11.1\t智能指针概述\t180 11.2\t专享所有权的智能指针 unique_ptr\t180 11.2.1\t基本使用场景和示例\t180 11.2.2\t一些技术细节\t182 11.3\t共享所有权的智能指针 shared_ptr\t183 11.3.1\t基本使用场景和示例\t183 11.3.2\t弱指针 weak_ptr\t184 11.3.3\t引用计数的性能问题\t185 11.4\t智能指针的传递方式\t186 11.5\t删除器的行为定制\t187 11.6\t小结\t189 第 12 章\t现代 C++ 的一些重要改进\t190 12.1\t类\t190 12.1.1\t类数据成员的默认初始化\t190 12.1.2\toverride 和 final\t191 12.2\t静态断言\t193 12.3\t字面量\t194 12.3.1\t用户定义字面量\t194 12.3.2\t二进制字面量\t197 12.4\t数字分隔符\t198 12.5\tconstexpr 变量和函数*\t199 12.5.1\t字面类型\t200 12.6\t枚举类和指定枚举的底层类型\t201 12.6.1\tbyte 类型\t202 12.7\t多元组 tuple\t203 12.7.1\t利用 tuple 的快速比较\t204 12.8\t时间库 chrono\t205 12.8.1\tC++20 前的 chrono 库\t205 12.8.2\tC++20 的 chrono 库改进*\t208 12.9\t随机数库 random\t210 12.10\t正则表达式库 regex\t212 12.11\t小结\t215 第 13 章\t契约和异常\t216 13.1\t契约式设计\t216 13.1.1\t契约式设计的优点、应用场景和实现方式\t217 13.1.2\t先决条件\t219 13.1.3\t后置条件\t222 13.1.4\t不变量\t224 13.2\t异常\t225 13.2.1\t不使用异常的 C 风格错误处理\t226 13.2.2\t使用异常的代码示例\t229 13.2.3\t如何处理异常\t231 13.2.4\t不用异常的理由\t234 13.2.5\t不用异常的后果\t236 13.3\t小结\t238 第 14 章\toptional/variant 和错误处理\t239 14.1\t不使用异常的错误处理\t239 14.2\toptional\t240 14.3\tvariant\t242 14.3.1\t访问 variant\t244 14.4\texpected\t246 14.5\t标准错误码\t249 14.5.1\t文件系统库里面的错误处理\t249 14.5.2\t集成自定义错误码\t251 14.6\t返回值优化问题\t253 14.7\t小结\t255 第 15 章\t传递对象的方式\t256 15.1\t传统的对象传递方式\t256 15.2\t性能优化的对象传递方式\t258 15.2.1\t针对移动的优化\t258 15.2.2\t该不该用值传参?\t259 15.2.3\t“不可教授”的很好性能传参方式*\t264 15.2.4\t字符串的特殊处理\t266 15.3\t小结\t267 第 16 章\t并发编程\t268 16.1\t并发编程概述\t268 16.2\t线程和锁\t269 16.2.1\t线程和锁的基本示例\t270 16.2.2\tthread 的析构问题\t271 16.2.3\t数据竞争示例\t272 16.2.4\t锁的更多细节\t273 16.3\t通知机制\t274 16.4\t期值\t278 16.4.1\tasync 和 future\t278 16.4.2\tpromise 和 future\t279 16.4.3\tpackaged_task 和 future\t280 16.5\t内存序和原子量\t281 16.5.1\t执行顺序问题\t281 16.5.2\t获得–释放语义\t286 16.5.3\tatomic\t288 16.6\t线程局部对象\t292 16.7\t线程安全的容器?\t296 16.7.1\t标准容器的线程安全性\t296 16.7.2\t同步访问的模板工具\t297 16.7.3\t支持并发访问的容器\t299 16.8\t小结\t300 第 17 章\t异步编程\t301 17.1\t异步编程的基本概念\t301 17.2\tAsio\t302 17.2.1\t异步执行\t302 17.2.2\t异步回调\t305 17.2.3\t同步网络程序\t306 17.2.4\t异步网络程序\t309 17.3\tC++20协程\t313 17.3.1\t使用协程的异步网络程序\t313 17.3.2\t使用协程的生成器*\t316 17.3.3\t有栈和无栈协程*\t319 17.4\t小结\t321 第 18 章\t探索 C++ 的工具\t322 18.1\t编译器\t322 18.1.1\t主流编译器简介\t322 18.1.2\t优化选项\t325 18.1.3\t告警选项\t326 18.1.4\t编译器的其他重要功能\t327 18.1.5\t标准库的调试模式\t328 18.2\tClang 系列工具\t329 18.2.1\tClang-Format\t329 18.2.2\tClang-Tidy\t331 18.2.3\tclangd\t333 18.3\t运行期检查工具\t333 18.3.1\tvalgrind\t333 18.3.2\tAddressSanitizer(ASan)\t333 18.3.3\tUndefinedBehaviorSanitizer(UBSan)\t334 18.3.4\tThreadSanitizer(TSan)\t335 18.4\tCompiler Explorer\t335 18.5\t小结\t336 结束语\t337 推荐阅读材料\t338 索引\t340 书评(媒体评论) 作为一名日常工作使用 C++ 近六年的开发者,书中介绍的许多方法让我深有共鸣。本书的知识点兼具广度和深度,作者从实际应用场景出发,提供了众多很好实践。它非常适合刚入门 C++以及希望进一步提升 C++ 技能的开发者。 ——罗能,华为高级工程师、《C++20 高级编程》作者 我就是看吴老师的《现代 C++ 编程实战》专栏成长的——现在这本新书简直就是个“大礼包”,内容多到爆炸,比专栏还要精彩。书中对知识点的讲解都是干货,相信每位读者都能从中学到很多,收获满满。 ——程序喵大人,资深 C++ 开发工程师、《C++20 高级编程(第5版)》译者 我把这本新书推荐给仍在使用传统 C++ 的同行。作者以严谨而亲切的语言,在克制的篇幅中涵盖了实战现代 C++ 的核心要点。阅读中我几次发现:“哦,现在可以这样了!” ——杨文波,资深嵌入式 C++ 程序员 《C++ Templates(第 2 版)中文版》《C++ Core Guidelines 解析》译者 C++ 是一门多范式的通用编程语言,既以其高性能和灵活性著称,也因其难学难用而广为人知。作为一位经验丰富的技术专家,吴咏炜老师不仅在 C++ 开发领域建树颇多,还曾参与翻译了多本技术书。我个人有幸与吴老师在这些翻译工作中合作,深感其治学态度之严谨,尤其是在技术细节上的把控,令人折服并受益良多。无论是对C++复杂概念的精准翻译,还是对现代编程理念的深刻理解,都展现出吴老师对技术的热爱与专注。 本书是一本扎根实战的技术书,更是一本充满洞见的实用工具书,体现了吴老师对 C++ 语言的深刻理解与技术追求。希望本书能够帮助开发者在现代 C++ 复杂的技术生态中游刃有余,实现高效而优雅的编程。最后,诚心建议每一位 C++ 开发者,无论是初学者还是有经验的老手,都读读这本书。 ——何荣华(墨梵),宝马自驾软件专家、 《C++ Templates(第 2 版)中文版》《C++ Core Guidelines 解析》《C++ 20 高级编程(第5版)》译者 本书作者以其数十年的开发经验和深厚的理论功底,深入探讨了现代 C++ 的核心特性,如智能指针、lambda 表达式、并发编程和异步编程等。同时,针对开发过程中常见的问题,本书提供了切实可行的解决方案和best practice。通过作者的精辟讲解,许多原本复杂难懂的知识点变得清晰明了。这本书不仅是学习和进阶现代 C++ 的良师益友,更是每个追求卓越的程序员都要读的佳作。 ——雨乐,广告引擎高级技术专家 现代 C++ 语言历经多次修订,增添了不少新功能与设施。刚接触的开发者往往感叹其卷帙浩繁,一时不知从何处抓起。然而正如“竹高万丈终循节,世事万变皆有道”。引入的概念虽多,但其要解决的问题却总是朴素而简单的,只是像竹子那样,随着时间积累,一节节越来越多、越来越高罢了。很高兴能看到此书问世,带领读者从实战出发,探寻这些概念要解决的问题及其背后的思想,从而更好地掌握现代C++。 ——倪文卿(IceBear),知乎 C++ 答主 |
随便看 |
|
霍普软件下载网电子书栏目提供海量电子书在线免费阅读及下载。