类似推荐
编辑推荐
想要彻底理解C11和C14,不可止步于熟悉它们引入的语言特性(例如,auto型别推导、移动语义、lambda表达式,以及并发支持)。挑战在于高效地运用这些特性,从而使你的软件具备正确性、高效率、可维护性和可移植性。这正是本书意欲达成的定位。它描述的正是使用C11和C14(即现代C)来编写真正卓越的软件之道。
本书沿用了Scott Meyers早期作品中业已证明的基于指导原则和实例驱动的格式,但介绍的是全新材料。本书是所有C软件开发工程师的必读之选。
内容简介
涵盖以下主题:
大括号初始化、noexcept规格、完美转发,以及智能指针的make函数的优缺点。
std::move、std::forward、右值引用和万能引用之间的联系。
编写整洁、正确,以及高效的lambda表达式的方法。
std::atomic和volatile有怎样的区别,它们分别用于什么场合,以及它们和C的并发API有何联系。
“旧”C程序设计(即C98)中的实战要求在现代C的软件开发中作出哪些修订。
作者简介
20多年来,Scott Meyers的Effective C丛书(包括《Effective C》、《More Effecitve C》和《Effective STL》)已经为C程序设计指南的业界设立标杆。他清晰明了引人入胜的、对复杂技术材料进行条分缕析的阐释为他赢得了世界范围内的称誉,也使他成为一名广受欢迎的培训师、咨询顾问和会议讲师。他拥有布朗大学计算机科学专业的博士学位。
章节目录
目录
出版商声明 1
致谢 3
绪论 7
第1章 型别推导 15
条款1:理解模板型别推导 15
条款2:理解auto型别推导 23
条款3:理解decltype 28
条款4:掌握查看型别推导结果的方法 35
第2章 auto 41
条款5:优先选用auto,而非显式型别声明 41
条款6:当auto推导的型别不符合要求时,使用带显式型别的初始化物习惯用法 46
第3章 转向现代C 52
条款7:在创建对象时注意区分()和{} 52
条款8:优先选用nullptr,而非0或NULL 61
条款9:优先选用别名声明,而非typedef 64
条款10:优先选用限定作用域的枚举型别,而非不限作用域的枚举型别 68
条款11:优先选用删除函数,而非private未定义函数 74
条款12:为意在改写的函数添加override声明 79
条款13:优先选用const_iterator,而非iterator 85
条款14:只要函数不会发射异常,就为其加上noexcept声明 89
条款15:只要有可能使用constexpr,就使用它 95
条款16:保证const成员函数的线程安全性101
条款17:理解特种成员函数的生成机制106
第4章 智能指针113
条款18:使用std::unique_ptr管理具备专属所有权的资源115
条款19:使用std::shared_ptr管理具备共享所有权的资源120
条款20:对于类似std::shared_ptr但有可能空悬的指针使用std::weak_ptr129
条款21:优先选用std::make_unique和std::make_shared,而非直接使用new133
条款22:使用Pimpl习惯用法时,将特殊成员函数的定义放到实现文件中141
第5章 右值引用、移动语义和完美转发 150
条款23:理解std::move和std::forward151
条款24:区分万能引用和右值引用156
条款25:针对右值引用实施std::move,针对万能引用实施std::forward161
条款26:避免依万能引用型别进行重载169
条款27:熟悉依万能引用型别进行重载的替代方案175
条款28:理解引用折叠187
条款29:假定移动操作不存在、成本高、未使用193
条款30:熟悉完美转发的失败情形196
第6章 lambda表达式 204
条款31:避免默认捕获模式205
条款32:使用初始化捕获将对象移入闭包212
条款33:对auto&&型别的形参使用decltype,以std::forward之217
条款34:优先选用lambda式,而非std::bind220
第7章 并发API 228
条款35:优先选用基于任务而非基于线程的程序设计228
条款36:如果异步是必要的,则指定std::launch::async232
条款37:使std::thread型别对象在所有路径皆不可联结236
条款38:对变化多端的线程句柄析构函数行为保持关注243
条款39:考虑针对一次性事件通信使用以void为模板型别实参的期值247
条款40:对并发使用std::atomic,对特种内存使用volatile254
第8章 微调 263
条款41:针对可复制的形参,在移动成本低并且一定会被复制的前提下,考虑将
其按值传递263
条款42:考虑置入而非插入273
Effective Modern C++ 简体中文版是2018年由中国电力出版社出版,作者。
得书感谢您对《Effective Modern C++ 简体中文版》关注和支持,如本书内容有不良信息或侵权等情形的,请联系本网站。