关于C++ FAQ:权威C++图书指南和列表

The Definitive C++ Book Guide and List

这个问题试图收集每年出版的几十本不好的C++书籍中的几颗珍珠。

与许多其他编程语言不同,这些编程语言经常在因特网上找到的教程中被挑选出来,很少有人能够快速学习C++而不学习一本写得好的C++书籍。这样做太大太复杂了。事实上,它是如此庞大和复杂,在那里有很多非常糟糕的C++书籍。我们并不是在谈论糟糕的风格,而是在炫耀明显明显的事实错误和推广糟糕透顶的编程风格。

请编辑所接受的答案,以提供优质书籍和一个近似的技能水平-最好在讨论你的添加在C++聊天室。(如果常客不同意你的建议,他们可能会毫不留情地撤销你的工作。)对你个人读过/受益过的每本书加上简短的宣传/描述。请随意讨论质量、标题等。符合标准的书籍将添加到列表中。由C和C++用户协会(ACCU)进行评论的书籍具有与评论相关的链接。

<> >注意:FQS和其他资源可以在C++标签信息和C++ + FAQ中找到。


初学者入门级,无编程经验

  • C++Prime*(Stanley Lippman,Joeee LaJoee,Barbara E. Moo)(更新为C++ 11)来到1K页,这是一个非常透彻的介绍C++,它涵盖了几乎所有语言中的一种非常容易访问的格式和细节。第五版(2012年8月16日发布)涵盖了C++ 11。[评论]好的。

  • 编程:使用C++的原理和实践(Bjarne Stroustrup,第二版- 2014年5月25日)(更新为C++ 11/C++ 14)。一个好的阅读,假设没有以前的编程经验,但不仅是初学者。好的。

*不要混淆与C++底漆加(Stephen Prata),具有明显不那么有利的审查。好的。介绍性,具有编程经验

  • 游览C++(Bjarne Stroustrup)(第二版C++ 17),"旅游"是一个快速(约180页和14章)教程概述的所有标准C++(语言和标准库,并使用C++ 11)在一个中等水平的人谁已经知道C++或至少是有经验的程序员。这本书是构成C++编程语言第2-5章第四版的材料的扩展版本。好的。

  • 加速C++(安德鲁·克尼格和Barbara Moo,第一版- 2000年8月24日),这基本上覆盖了与C++底漆相同的基础,但是在它的第四的空间上这样做。这主要是因为它不试图成为编程的入门,而是对以前用其他语言编程的人进行C++的介绍。它有一个更陡的学习曲线,但是,对于那些能够应付这个问题的人来说,它是一个非常紧凑的语言介绍。(历史上,它是第一个初学者使用现代方法来教语言的书,开辟了新的天地。)尽管如此,C++它教的是纯C++ 98。[评论]好的。

最佳实践

  • 有效的C++(Scott Meyers,第三版- 2005年5月22日),这是为了成为C++程序员应该读的最好的第二本书而编写的,它成功了。早期版本是针对来自C的程序员,第三版改变了这一目标,并针对来自Java等语言的程序员。它以一种非常容易理解(和愉快)的风格呈现了~50个易于记忆的经验法则及其基本原理。对于C++ 11和C++ 14,例子和一些问题是过时的,而现代C++应该是首选的。[评论]好的。

  • 有效的现代C++(Scott Meyers),这基本上是新版本的有效C++,旨在C++程序员实现从C++ 03到C++ 11和C++ 14的过渡。好的。

  • 有效的STL(Scott Meyers),其目的是对来自STL的标准库的一部分做同样的事情:有效的C++对语言的整体作用:它给出了经验法则以及它们的原理。[评论]

中间的

  • 更有效的C++(Scott Meyers)比有效的C++更多的经验法则。虽然不如第一本书中的重要,但仍然值得一提。好的。

  • Excel C++(Habor萨特)呈现为一组谜题,除了深入研究各种其他主题(包括PIML成语、名称查找、好类设计)之外,它还通过资源获取初始化(RAII)对C++中的适当资源管理和异常安全进行了最好和彻底的讨论之一。以及C++内存模型。[评论]好的。

  • 更优秀的C++(Habor萨特)除了在C++中讨论了有效的面向对象编程和正确使用STL之外,还涵盖了在Excel C++中没有涉及的额外的异常安全主题。[评论]好的。

  • Excel C++风格(HEP萨特)讨论了泛型编程、优化和资源管理;这本书还对如何使用非成员函数和单一责任原则在C++中编写模块化代码进行了很好的阐述。[评论]好的。

  • C++编码标准(Herb Sutter和安德列alexandrescu)编码标准"在这里并不意味着"我应该缩进多少空间我的代码?本书包含101"的成语,和最佳做法,强调共同的缺陷,可以帮助你写什么,正确的,有效的C + +代码。[评论]

  • C + +模板:完全指南(Nicolai M.大卫范德沃德和josuttis)这是一个关于书的模板作为他们的存在在C + + 11。它涵盖一切从一个非常基本的一些最先进的模板元编程和详细解释了如何工作的每一个地方,在conceptually模板是如何实现多系统常见的陷阱和讨论)。安切洛蒂和审查的一个定义的规则(或决议)和过载的附录中。第11版在C + +,C + +和C + + 14 17已已经出版。[评论]

  • C++完全指南17(Nicolai M. josuttis)本书提供了所有的新功能在C + +标准覆盖17一切从简单的一类constexpr内联变量","if"的方式向所有的内存资源的多态性和一个新的和overaligned删除数据。

先进的

  • 现代C + +设计(Andrei alexandrescu)一书在groundbreaking先进的通用编程技术。介绍了基于策略的设计,与基本型通用编程成语列表,然后解释了如何许多有用的设计模式(包括小对象分配器,functors,工厂,游客,和多方法可以有效地实现,modularly cleanly通用编程和使用。[评论]

  • C++模板元编程(Aleksey亚伯拉罕和大卫gurtovoy)

  • 在C + +的并发行动(Anthony Williams)一本书覆盖C + +库的并发线程的支持,包括11,原子库,C++内存模型和互斥锁,工作人员设计和调试多线程应用程序的问题。

  • 先进的C + +元编程(Davide Di Gennaro)A前C + + 11 TMP技术手册,更多的集中在实践比理论。有声图书杂志在这一段,这是由制造型特征的过时的技术,但要知道,原来是有用的。如果你能把动与quirky格式化/编辑,它是不容易阅读。arguably alexandrescu,和更多。更多经验丰富的开发者有一个很好的机会,你可以拿起一些关于C++的暗角a(a是一个过程),只有通过广泛的体验。

参考样式的所有关卡

  • 《C++程序设计语言(Bjarne Stroustrup(C + +)和(11)经典的C + +通过其自然的创造者。一个经典的K平行书面&;R,这的确很喜欢读它,只是一切从封面的核心语言的标准库,编程范式对apla语言哲学。[评论]注:所有版本的C + +标准的线是在这个问题:在哪里可以找到的电流I C + +标准。

  • C++标准库教程和参考(Nicolai josuttis(C + +)和(11)和参考的介绍C++的标准库。第二版(2012年4月发布的封面上9,11)的C + +。[评论]

  • 在C + +和IO流的地方(当归长克劳斯和硫酸盐)有很小但这本书要说的是,如果你想知道任何事流和地区,然后这是一个地方找到明确的答案。[评论]

C++/11/14/17。参考文献:

  • 在C + +(11/14/17/INCITS标准ISO / IEC 14882 2011 2014 2017:/ /)这个,当然,是最终的仲裁者,是不是所有的T或C + +。然而,它的成功,是在purely作为参考的经验的用户谁愿意投入时间和努力理解它。C + +是在电子形式发布17标准为198瑞士法郎。

  • 17《C++标准是可用的,但在经济困境中看似形式–IT成本直接从ISO 198瑞士法郎(约200美元)。一个标准化的人,在最后的选秀是更多的厨房(免费)。我想不喜欢在更新的新功能documenting选秀,这可能会包括在C + + 20。

  • 概述了新的C + +(C + +(11/14),只读(Scott Meyers的PDF格式)(C + +)和(14)材料(主要是演示幻灯片和一些讲义)of a三日培训课程提供由Scott Meyers,谁是高度受尊敬的作者在C + +。即使是短的项目清单,是高质量的。

  • 在C + +(的C + +的核心指南11/14/17/……)(编辑和Herb Sutter Bjarne Stroustrup)是一个不断变化的在线文档包括一套指南使用现代的C + +的水平。指引是非常专注于更高级别的问题,如接口,资源管理,内存管理和并发应用程序的体系结构和图书馆设计的影响。该项目是在"十五cppcon宣布由Bjarne Stroustrup和欢迎酒店和其他社区的贡献。指南是一个最合理的补充工作人员的讨论和例子,可能的工具支持。许多规则是专门设计的自动checkable red静态分析工具。

  • 超级C + +常见问题解答(Marshall Cline,Bjarne Stroustrup和他人的努力)是一个由标准C + +的C + +到unify基础常见问题进行单独使用由马歇尔克莱恩和Bjarne Stroustrup和因此将新的贡献。这项工作主要是在中间层的地址是写一个humorous所有粘土。这些项目可能不完全是最新的和最新的C + +标准版呢。

  • cppreference.com(C++ 03/11/14/16/……(开始)由Nate白菜)是一个基本的核心summarizes Wiki语言的功能和广泛的文献有《C++标准程序库。文档是非常精密的但容易阅读比官方标准文档和提供更好的导航,由于其自然的wiki。该项目文件的所有版本的C + +标准和允许过滤的网站显示一个特定的版本。该项目是由Nate在cppcon甘蓝14。

旧的经典

注:一些信息可能不包含在论文手册是最新的或不再被认为是最佳做法。

  • 在C++的设计和演化》(Bjarne Stroustrup)如果你想知道为什么它是一个语言的方式,本书就是你的答案。这包括一切在C + +标准化协会。

  • 沉思在C + +(Andrew Koenig和Moo芭芭拉)[评论]

  • 高级C++编程风格和成语(James coplien)a predecessor运动的模式,它描述了在C + +的特异性"成语"。它是一个非常好和安静的书值得一读,如果你可以节省时间和不太老,但最新的一个C + +电流。

  • 大规模C++程序设计(约翰设法解释了微气泡)微气泡技术非常大的C + +软件项目。确实,一个良好的读取,如果它只做最新的。这是写在C + +长98和夫人的许多重要特征(例如命名空间)的大型项目。如果你需要工作在一个大的C + +软件项目,你可能想读它,但你需要采取比一粒盐的学院。第一卷of a New Edition是预计在2018年。

  • 在C + +对象模型(Stanley Lippman)如果你想知道虚拟成员函数通常是实现知识库的形式和对象是在内存中还是多出一个继承的情况下,所有这些个特性,你会发现这是一个彻底的搜索主题的讨论。

  • 注释的C++参考手册(Bjarne Stroustrup,Margaret A. Ellis)这本书已经过时了,因为它探索了1989个C++ 2版本——模板、异常、命名空间和新的版本还没有被引入。但是,这本书贯穿整个C++时代的标准,解释了语言的原理、可能的实现和特性。这不是一本学习C++编程原理和模式的书,而是理解C++语言的每一个方面。好的。

  • C++思想(Bruce Eckel,第二版,2000)。两卷;是一套免费的入门级书籍。下载:第一册,第二册。不幸的是,他们受到了一些小错误的破坏(例如,保持临时性自动为cx1(0)),没有正式的勘误表。部分第三方勘误表可在(http://www.computersciencelab.com/eckel.htm)上找到,但显然没有维护。好的。

  • 科学与工程C++:先进技术与实例导论(John Barton和Lee Nackman)它是一本综合的、非常详细的书,试图解释和利用C++中的所有特征,在数值方法的上下文中。它当时引入了一些新的技术,例如奇怪的重复模板模式(crtp,也称为barton-nackman技巧)。它开创了一些技术,如尺寸分析和自动微分。它附带了许多可编译和有用的代码,从表达式解析器到lapack包装器。代码仍然可以在这里找到:http://www.informit.com/store/scientific-and-engineering-c-plus-an-introduction-9780201533934。不幸的是,书籍在风格和C++特征上已经有些过时了,然而,当时它是一个令人难以置信的巡演(1994,前STL)。关于动态继承的章节理解起来有点复杂,也不是很有用。这本经典书的更新版本,包括移动语义和从STL中学到的经验教训,将是非常好的。好的。

好啊。