关于C++的经典书籍有哪些

本文推荐了一系列C++学习书籍,从入门到精通,涵盖了语言基础、STL、泛型编程、设计模式等多个方面,帮助读者逐步掌握C++的核心概念和技术。

c++程序设计教程
c++编程思想
c++大学教程
c++程序设计语言
数据结构算法与应用c++语言描述
c++标准模板库——自修教程与参考手册
泛型编程与STL
深度探索c++对象模型
设计模式—可复用面向对象软件的基础
重构—改善既有代码的设计
Essential c++
Effective c++
More Effctive c++
C++ primer

前五本应该属于入门书籍,后面的属于学习难度比较大的,想提高C++的编程能力,看看这些书籍有好处。建议你把编程思想这本书多看看。多做练习题,对提高编程水平的帮助是很大的。

其实语言是相通的,一门语言学会了,学习其他语言就比较容易了。 业界有这样一种说法,因为JAVA这门语言包含了C++的一些特性,掌握了C++,就等于掌握了JAVA的80%。

如果你想学习c/c++可以来这个群,首先是三三零,中间是八五九,最后是七六六,里面有大量的学习资料。

C++ 书籍大汇

语言基础入门:

  1. C++ Primer 《C++入门》(通常不用中文名)
    by Stanley B. Lippman
    有第三版和第四版,如其名,是C++入门的不二选择,是全面广泛的参考书目,内容丰富,笔触严谨。
    如果说Bjarne Stroustrup是C++之父的话,那么Lippman可以说是C++之母了:)

适合有丰富C经验,缺乏C++经验的。不过我个人一直认为此书带着过于强烈的C语言的痕迹,对于C++的学习未必是好事。

  1. The C++ Programming Language 《C++程序设计语言》
    by Bjarne Stroustrup
    有第三版特别版,刚刚为一个朋友买了一本,不用说了 Bjarne Stroustrup写的,权威之作,可以说与C++ Primer是同等广博的“圣经”级别

的参考书。

简称TC++PL,有其他语言的丰富经验的。(也有人简称之为“TCPL”,但需与另一本《The C Programmer Language》区分开来)

  1. Essential C++ 《C++基础》
    by Stanley B. Lippman
    同样是入门的基础,也是由Stanley B. Lippman执笔的作品,研究语法÷语意再好不过的了。

  2. Accelerated C++
    by Andrew Koenig and Barbara E. Moo
    夫妻一同的作品,Koenig夫妇可以说也是顶尖领域的专家,相比Barbara E. Moo比较注重教学,这本本人同晨星老大一样没有读过,当时它的

副标题应该能说明一些内容了吧。
Practical Programming by Example 通过实例来实践编程

这两本薄一些,都是不错的选择。《Accelerated C++》本人没有读过,从各方面的评价来看,完全值得推荐。

以上的书籍都应该随手查阅的,即使是将来,也有一些细节可能一下不能回忆依然需要查阅,然而这四本内容涉及程度有一定的交叉,可以选

择而读,个人认为和晨星的建议一样:TC++PL是应该阅读的。

进阶A,经验与惯用法:

  1. Effective C++ , More Effective C++
    by Scott Meyers
    这几本我认为应当归在一起介绍,老实说这些条款是开发项目以及平时学习中不可缺少的Golden Tips,反复阅读,你会发现这些条款实在是再

深刻不过的了。

简称EC。C++程序员必读!很多时候,我们说C++圣经不是指TC++PL,而是这一本。《The Pragmatic Programmer》一书中写到:“一旦

你发现自己要参与C++项目的开发,赶快跑(不要走)到书店去购买Scott Mayer的《Effective C++》,可能还要《More Effective C++》”。

可见晨星对于Scott Meyers的这两本推荐的程度了!

  1. Exceptional C++ , More Exceptional C++ , Exceptional C++ Style
    by Herb Sutter
    这三本也是该归在一起的,Herb Sutter是C++标准委员会的老大,现在人在微软,他的书当然也是相当具有启发意义的。

  2. C++ Coding Standards: 101 Rules, Guidelines, and Best Practices 《C++ 编程规范》
    by Herb Sutter and Andrei Alexandrescu
    这本最近又看了一遍也是感到尤其深刻,案头书的描述再好不过了,里面丰富的名言,丰富的内涵,以及每次重复阅读都能有新的发现,哎,

不称之为经典也不幸哎!

个人认为此书应为C++程序员必备的案头书。几乎Effective系列和Exceptional系列都在这里得到了总结。最新的模板、异常的业界经验

都在这里的到了体现。可能的唯一缺陷就是对一个新手而言,关于“为什么这么做”的问题,解释的不够。
我的看法是:如果你不理解其中的条款,记忆,并且照做;如果你理解其中的条款,我猜你一定会同意书中的观点。我认为这本书中的内容至

少在2009年以前都不会过时,人们将广为传诵它制定的101条戒律。
还不知道他的简称,也许“101”会成为一个候选者?

晨星的评论似乎有点冗长,作为进阶的Guidelines,绝对是首选。

进阶B,STL与范型(GP):

作为标准库的一部分,STL已经深入我们的开发生活,vector,list,deque,set,map等等都是我们首选的容器,iterator的机制已经无可厚非地

被接受,STL引入的范型也给我们打开了一闪窗。

  1. The C++ Standard Library 《C++标准程序库—自修教程与参考手册》
    A Tutorial and Reference by Nicolai M.Josuttis,
    STL怎么用?看看本书吧。Nicolai M.Josuttis好像也是C++标准委员会的成员,也是C++ Template的作者。

听说过STL吗?这本书会教你最基本的,也是最重要的STL的使用。这本书,应该是必读的。

  1. Effective STL
    简单的使用后的提升

会使用STL还不够,还必须知道什么时候选择什么STL组件,这是STL使用的必读书。

  1. Generic Programming and the STL: Using and Extending the C++ Standard Template Libra 《泛型编程与STL》。
    Using and Extending the C++ Standard Template library by Matthew H.Austern
    书的副标题很谦虚,似乎说本书只是使用和扩展,其实本书可谓GP理论入门的必读,STL的内涵与设计都可以看到

这本书理论性较强,但是真的很严谨,而且并不是非常难懂。理解其中对于Concept的解释,将是非常重要的。

  1. C++ Standard Template Library 《C++ STL》
    by P.J.Plauger,Alexander A.Stepanov, Meng Lee,David R.Musser
    两位STL库的设计人员P.J.Plauger和Meng Lee,讲述STL实现的原理

这不是讲述使用程序库的,而是讲述程序库实现原理的。肠胃不好的,需要慢慢吸收。

  1. C++ Template 《C++模板》
    by David Vandevoorde, Nicolai M. Josuttis
    本书可谓全面介绍了模板的使用细则,当然本人认为介绍的细节不是很细致,归类不如C++ Primer,当然模板的基本用法都可以看到。

在阅读STL、Boost或者Loki的源代码之前,请仔细阅读本书,它可以减轻一些阅读的烦恼。这本书是讨论C++模板的权威。

C++ Template Metaprogramming : Concepts, Tools, and Techniques from Boost and Beyond
by David Abrahams and Aleksey Gurtovoy

本书没有看到中文版,也是一本介绍模板元编程的专业参考书,十分细致地讲述了高级的模板技术,只是本书只有英文版的。

再进阶A,底层机制:

  1. The Annotated C++ Reference Manual
    by Margaret A.Ellis and Bjarne Stroustrup
    标准库的全面解析,BS老大为标准库量身定做的很OFFICAL的参考。
    简称:ARM

  2. Inside the C++ Object Model 《深度探索C++物件模型》
    by Stanley Lippman
    即使反复学习了进阶A,依然有许多语言实现方面的Puzzle问题,尤其是虚继承,临时对象等令人麻烦的深层问题值得学习,Lippman以一位专

家的身份给了我们一个深窥语言内部的可能,正如晨星所言,Lippman的书都有C和底层实现的影子。

C程序员读后一定会觉得C++原来并不神秘。

再进阶B,设计模式:

  1. Design Patterns - Elements of Reusable Object Oriented Software 《设计模式》
    by Erich Gamma,Richard Helm,Ralph Johnson,and John Vlissides

老实说不应该把设计概念的东西拿到这里来,当时本书大多数以C++语言为例子,也是我们应该学习的。
GoF听说过吗?Gang of Four四人帮:)就是说的本文的四位作者,他们是设计模式总结的先驱,看了本书之后,OO的设计模式会深入里的大脑。
由于模式的粒度过大,所以不能被代码化,只是一种概念,可以说是体现在项目中的灵魂。
还要提到的是最近John Vlissides去世了,在此我对他的逝世感到万分的惋惜。

  1. Modern C++ Design : Generic Programming and Design Patterns Applied 《C++设计新思维》
    by Andrei Alexandrescu

本书最近好好地研究过了,这里终于要介绍Andrei Alexandrescu了,他是Real公司的项目经理,是GP模板技术的天才,他的高深模板技术影响

了BOOST以及全世界的模板怪杰,本书中他介绍他的库Loki,虽然库十分激进没有实际用途,当时展现的绚烂的特技令人叹服!同时本书是设计

模式用范型实现的经典展现,以及Policy设计模式在其中的极致应用,直接影响了BOOST的adaptor设计(7个Policy)甚至影响了标准库的智能

指针项目(虽然最后被否认了,当时绝对是完美的实现方法)

简称MCD。在阅读MCD之前,建议先阅读一下《C++ Template》。

  1. Thinking in C++ 《C++编程思想》
    by Bruce Eckel
    本书本人只是瞄了一眼,似乎第二本实用编程技术比较有用。
    这本书及其中文版传言好坏都有,没有认真看过,不做评价,如果确有兴趣,不妨尝试一下该书。

  2. C++必知必会
    by
    如同101一样,当然也是权威的作品,只是没有遇到好的天时而已。
    如果早一年,这本书将是重量级的,然而它被101和《Exceptional C++ Style》盖过一头。

  3. C++ Gotchas: Avoiding Common Problems in Coding and Design 《C++程序设计陷阱》
    by
    常规,曾经有许多人让我去看此书,可惜一直没有去看的精力,于是搁置许久,当时深刻了解此书中被引用内容的权威,好评也是不断。
    这又是一本我未曾读过,而且广受好评的书。

  4. STL 源码剖析
    by 候捷
    最近刚刚看了电子版,少有的国人之作,内容方面还可以,只是一些候氏方言令人头疼。
    这本书我刚到手,就被人”借”走,以至于到现在也没有看过。看过这本书的朋友,可以给一个合适的评价。

其他高级:

  1. The Design and Evolution of C++ 《C++语方的设计和演化》
    by Bjarne Stroustrup
    又是BS老大的一本,值得一看
    简称D&E,内容并不艰深,Bjarne的书,仅此,就值得一读。
    前段时间,互动网曾8块一本(人民币)贱卖此书,现在好像没了。

如果有我一定屯个N本:)

  1. 《对象揭秘:Java、Eiffel和C++》
    by
    没有看过,所以没有资格作评论
    你对C++不满吗?这本书可以部分地帮你完成抱怨的目标。也许它还可以让你不迷信C++。

  2. Imperfect C++ 《不完美的C++》
    by Matthew Wilson
    新书,本书介绍了许多新一代技术,以及C++很多有趣的技术,BS本来想把它加入C++ In Depths行列的,可惜最后说了一句:“如果本书再少

一些,也许我会考虑的。”就完了,但是无论如何本书都是一本好书,值得一看。

最后提一下C++ In Depths系列,这个是Bjarne Stroustrup发起的将一些比较有价值的有意义的好书归成一类的选集。这里是英文的介绍:
Accelerated C++: Practical Programming by Example, Andrew Koenig and Barbara E. Moo
Applied C++: Practical Techniques for Building Better Software, Philip Romanik and Amy Muntz
The Boost Graph Library: User Guide and Reference Manual, Jeremy G. Siek, Lie-Quan Lee, and Andrew Lumsdaine
C++ Coding Standards: 101 Rules, Guidelines, and Best Practices, Herb Sutter and Andrei Alexandrescu
C++ In-Depth Box Set, Bjarne Stroustrup, Andrei Alexandrescu, Andrew Koenig, Barbara E. Moo, Stanley B. Lippman, and Herb

Sutter
C++ Network Programming, Volume 1: Mastering Complexity with ACE and Patterns, Douglas C. Schmidt and Stephen D. Huston
C++ Network Programming, Volume 2: Systematic Reuse with ACE and Frameworks, Douglas C. Schmidt and Stephen D. Huston
C++ Template Metaprogramming: Concepts, Tools, and Techniques from Boost and Beyond, David Abrahams and Aleksey Gurtovoy
Essential C++, Stanley B. Lippman
Exceptional C++: 47 Engineering Puzzles, Programming Problems, and Solutions, Herb Sutter
Exceptional C++ Style: 40 New Engineering Puzzles, Programming Problems, and Solutions, Herb Sutter
Modern C++ Design: Generic Programming and Design Patterns Applied, Andrei Alexandrescu
More Exceptional C++: 40 New Engineering Puzzles, Programming Problems, and Solutions, Herb Sutter
For more information, check out the series web site at

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值