faq中文 最终C++书籍指南和列表



c++ faq中文 (1)

初学者

介绍,没有以前的编程经验

  • C ++ Primer *(Stanley Lippman,JoséeLajoie和Barbara E. Moo)( 针对C ++ 11更新 )以1k页为单位,这是对C ++的一个非常全面的介绍,它以非常易于访问的格式涵盖了语言中的所有内容而且非常详细。 第五版(2012年8月16日发布)涵盖了C ++ 11。 [Review]

  • 编程:使用C ++的原理和实践 (Bjarne Stroustrup,第2版 - 2014年5月25日)( 针对C ++ 11 / C ++更新14 )介绍使用C ++编程的语言创建者。 一个很好的阅读,假设没有以前的编程经验,但不仅适合初学者。

*不要与C ++ Primer Plus (Stephen Prata)混淆, review明显不太好。

介绍,具有以前的编程经验

  • C ++之旅 (Bjarne Stroustrup)( C ++ 17第2版 )“tour”是一本快速的(大约180页和14章)教程概述所有标准C ++(语言和标准库, 以及使用C ++) 11 )对于已经了解C ++或至少是经验丰富的程序员的人来说处于中等水平。 本书是构成C ++编程语言第4版第2-5章的材料的扩展版本。

  • 加速C ++ (Andrew Koenig和Barbara Moo,第1版 - 2000年8月24日)这基本上涵盖了与C ++ Primer相同的基础,但是它的四分之一空间。 这很大程度上是因为它并不试图成为编程的介绍,而是为以前用其他语言编程的人们介绍C ++ 。 它有一个更陡峭的学习曲线,但是,对于那些能够应对这种情况的人来说,它是一种非常紧凑的语言介绍。 (从历史上看,它作为第一本使用现代方法教授语言的初学者书开辟了新天地。)尽管如此,它所教授的C ++纯粹是C ++ 98。 [Review]

最佳做法

  • 有效的C ++ (Scott Meyers,第3版 - 2005年5月22日)这篇文章的目的是成为C ++程序员应该阅读的最好的第二本书,并且它成功了。 早期版本的目标是来自C的程序员,第三版改变了这一点,并针对来自Java等语言的程序员。 它提供了大约50个易于记忆的经验法则以及它们在非常容易获得(和愉快)风格中的基本原理。 对于C ++ 11和C ++ 14,示例和一些问题已经过时,应该首选Effective Modern C ++。 [Review]

  • Effective Modern C ++ (Scott Meyers)这基本上是Effective C ++的新版本,旨在让C ++程序员从C ++ 03转换到C ++ 11和C ++ 14。

  • 有效的STL (Scott Meyers)这个目标是对来自STL的标准库的部分做同样的事情,即Effective C ++对整个语言的作用:它提供了经验法则及其基本原理。 [Review]

中间

  • 更有效的C ++ (Scott Meyers)比Effective C ++更有经验法则。 没有第一本书那么重要,但仍然很有用。

  • Exceptional C ++ (Herb Sutter)作为一组谜题,通过资源获取初始化(RAII)以及对各种类型的深入报道,对C ++中适当的资源管理和异常安全进行了最佳和彻底的讨论。其他主题包括pimpl成语,名称查找,良好的类设计和C ++内存模型。 [Review]

  • 更多特殊C ++ (Herb Sutter)除了讨论C ++中有效的面向对象编程和正确使用STL之外,还涵盖了Exceptional C ++中未涉及的其他异常安全主题。 [Review]

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

  • C ++编码标准 (Herb Sutter和Andrei Alexandrescu)这里的“编码标准”并不意味着“我应该在多少空格中缩进我的代码?”这本书包含了101个最佳实践,成语和常见的陷阱,可以帮助你写出正确的,可理解且高效的C ++代码。 [Review]

  • C ++模板:完整指南 (David Vandevoorde和Nicolai M. Josuttis)这是关于在C ++ 11之前存在的模板书。 它涵盖了从基础知识到一些最先进的模板元编程的所有内容,并解释了模板如何工作的每个细节(概念上和它们如何实现),并讨论了许多常见的陷阱。 在附录中有一个定义规则(ODR)和重载决策的优秀摘要。 第二版已经发布了涵盖C ++ 11,C ++ 14和C ++ 17的版本。 [Review]

高级

  • 现代C ++设计 (Andrei Alexandrescu)一本关于高级通用编程技术的开创性着作。 介绍基于策略的设计,类型列表和基本的通用编程习惯,然后解释有多少有用的设计模式(包括小对象分配器,仿函数,工厂,访问者和多方法)可以使用通用编程高效,模块化和干净地实现。 [Review]

  • C ++模板元编程 (David Abrahams和Aleksey Gurtovoy)

  • C ++ Concurrency In Action (Anthony Williams)一本涵盖C ++ 11并发支持的书,包括线程库,原子库,C ++内存模型,锁和互斥,以及设计和调试多线程应用程序的问题。

  • 高级C ++元编程 (Davide Di Gennaro)TMP技术的前C ++ 11手册,更多地关注实践而不是理论。 本书中有大量的片段,其中一些片段特征已经过时,但这些技巧仍然有用。 如果你能忍受古怪的格式/编辑,它比Alexandrescu更容易阅读,并且可以说更有价值。 对于更有经验的开发人员来说,很有可能你会发现一些关于C ++(一个怪癖)的黑暗角落,这通常只是通过丰富的经验来实现的。

参考风格 - 所有级别

  • C ++编程语言 (Bjarne Stroustrup)( 针对C ++ 11更新 )其创建者对C ++的经典介绍。 写得与经典的K&R并行,这确实非常像它,涵盖了从核心语言到标准库,编程范式到语言哲学的所有内容。 [Review]注意:在这个问题中跟踪了C ++标准的所有版本: 我在哪里可以找到当前的C ++标准 。

  • C ++标准库教程和参考 (Nicolai Josuttis)( 针对C ++ 11更新 )C ++标准库介绍和参考。 第二版(2012年4月9日发布)涵盖了C ++ 11。 [Review]

  • C ++ IO流和语言环境 (Angelika Langer和Klaus Kreft)除了如果您想了解有关流和语言环境的任何内容之外,对本书几乎没有什么可说的,那么这是找到明确答案的地方。 [Review]

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

  • C ++ 11/14/17标准(INCITS / ISO / IEC 14882:2011/2014/2017)当然,这是所有C ++的最终仲裁者。 但请注意,它纯粹是为有经验的用户提供参考, 他们愿意花费大量的时间和精力来理解它。 C ++ 17标准以198瑞士法郎的电子形式发布。

  • C ++ 17标准可用,但似乎不是经济形式 - 17它的成本为198瑞士法郎(约合200美元)。 对于大多数人来说, 标准化之前最终草案绰绰有余(而且是免费的)。 许多人更喜欢更新的草案 ,记录可能包含在C ++ 20中的新功能。

  • 新C ++概述(C ++ 11/14)( 仅限PDF) (Scott Meyers)( 针对C ++ 1y / C ++ 14更新 )这些是三个的演示材料(幻灯片和一些讲义)由Scott Meyers提供的日间培训课程,他是C ++的备受尊敬的作者。 即使项目清单很短,质量也很高。

  • C ++核心指南(C ++ 11/14/17 / ...) (由Bjarne Stroustrup和Herb Sutter编辑)是一个不断发展的在线文档,包含一套很好地使用现代C ++的指南。 指南侧重于相对较高级别的问题,例如接口,资源管理,内存管理以及影响应用程序架构和库设计的并发性。 该项目由Bjarne Stroustrup和其他人在CppCon'15宣布,并欢迎社区的贡献。 大多数指南都补充了基本原理和示例,以及对可能的工具支持的讨论。 许多规则专门设计为可由静态分析工具自动检查。

  • C ++ Super-FAQ (Marshall Cline,Bjarne Stroustrup等)是标准C ++基金会的一项努力,旨在统一以前由Marshall Cline和Bjarne Stroustrup单独维护的C ++常见问题解答,并纳入新的贡献。 这些项目主要针对中级问题,并且通常以幽默的语调编写。 并非所有项目都可能与最新版本的C ++标准完全一致。

  • cppreference.com(C ++ 03/11/14/17 / ...) (由Nate Kohl发起)是一个wiki,它总结了基本的核心语言特性,并提供了大量的C ++标准库文档。 文档非常精确,但比官方标准文档更易于阅读,并且由于其维基性质而提供更好的导航。 该项目记录了C ++标准的所有版本,该站点允许过滤特定版本的显示。 该项目由Nate Kohl在CppCon'14上展示

经典/老年人

注意:这些书中包含的某些信息可能不是最新的或不再被视为最佳做法。

  • C ++的设计和演变 (Bjarne Stroustrup)如果你想知道为什么语言是这样的,那么这本书就是你找到答案的地方。 这涵盖了C ++ 标准化之前的所有内容。

  • 关于C ++的反思 - (Andrew Koenig和Barbara Moo) [Review]

  • 高级C ++编程风格和习语 (James Coplien)模式运动的前身,它描述了许多特定于C ++的“成语”。 这肯定是一本非常好的书,如果你可以节省时间,可能仍然值得阅读,但是相当陈旧,并且不能与当前的C ++保持同步。

  • 大规模C ++软件设计 (John Lakos)Lakos解释了管理非常大的C ++软件项目的技术。 当然,这是一个很好的阅读,如果它只是最新的。 它早在C ++ 98之前编写,并且错过了许多对大型项目很重要的功能(例如命名空间)。 如果你需要在一个大的C ++软件项目中工作,你可能想要阅读它,尽管你需要花费更多的东西。 新版本的第一卷预计在2018年

  • 在C ++对象模型中 (Stanley Lippman)如果你想知道虚拟成员函数是如何被普遍实现的,以及基本对象在多继承场景中如何通常在内存中布局,以及所有这些如何影响性能,这就是你要去的地方找到对这些主题的深入讨论。

  • Annotated C ++参考手册 (Bjarne Stroustrup,Margaret A. Ellis)这本书已经过时了,因为它探讨了1989 C ++ 2.0版本 - 模板,异常,名称空间和新演员表尚未引入。 然而,这本书说明了本书贯穿整个C ++标准,解释了该语言的基本原理,可能的实现和功能。 这不是一本学习C ++编程原理和模式的书,而是了解C ++语言的各个方面。

  • 用C ++思考 (Bruce Eckel,第2版,2000)。 两卷; 是一套免费的教程风格的入门级书籍。 下载: 第1 第2卷 。 不幸的是,他们被一些微不足道的错误所破坏(例如,保持临时状态是自动的),没有正式的勘误列表。 部分第三方勘误列表可在( 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-plus-an-introduction-9780201533934http://www.informit.com/store/scientific-and-engineering-c-plus-plus-an-introduction-9780201533934 。 不幸的是,这些书在风格和C ++特性方面已经过时了,但是,当时它是一个令人难以置信的巡回演出(1994年,STL之前)。 关于动力学继承的章节有点复杂,不太有用。 这本经典书籍的更新版本包括移动语义和从STL学到的经验教训将是非常好的。

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

与许多其他编程语言不同,这些编程语言经常从互联网上的教程中随处获取,很少有人能够快速学习C ++,而无需学习编写精良的C ++书籍。 这样做太复杂了。 事实上,它是如此庞大和复杂, 有很多非常糟糕的C ++书籍 。 我们并不是在谈论糟糕的风格,而是体育明显的事实错误促进糟糕的编程风格

请编辑接受的答案,以提供高质量的书籍和近似的技能水平 - 最好 C ++聊天室讨论您的添加 。 (如果他们不同意推荐,常客可能会毫不留情地撤销你的工作。)为你亲自阅读/受益的每本书添加简短的描述/描述。 随意讨论质量,标题等。符合标准的书籍将被添加到列表中。 由C和C ++用户协会(ACCU)进行评论的书籍都有指向评论的链接。

*注意:常见问题和其他资源可以在C ++标签信息和c ++ - faq中找到 。





c++-faq