一些C++的好书
下面是一些C++的好书,我按照类型列了出来,并附有介绍。方括号[]内是我自己读后的评论,有的书可以在图书馆借到,我也会标明。
# 参考手册类型
The C++ Programming Language (Bjarne Stroustrup)
C++之父的经典著作,包含了几乎一切,从核心语言,到标准库,甚至还有编程的哲学(所以最新版已经有一千多页)。
C++ Standard Library Tutorial and Reference (Nicolai Josuttis)
介绍C++标准库的书。
[好书注意,如果你刚刚学会了C++的基础知识,那么这一本书无疑是最适合你了。正如其题目所言,这本书既是一本入门书,也是一本参考手册。从一开始,这本书就循循善诱,向你介绍标准库的设计逻辑、使用方法,以及为什么要这么设计,逻辑性很强。这本书读下来,无论C++基础,还是程序设计的能力,都会加强许多许多。
五楼外文阅览室有借,编号TP312C++/J84]
The C++ IO Streams and Locales (Angelika Langer and Klaus Kreft)
如果你想了解Streams和Locales的方方面面,这本书无疑最合适了。
[iostream和locale是标准库里最糟糕的部分,这本书,就算了吧……]
# 适合初学者的书
## 介绍性
如果你从来没编程过,或者接触过其他语言想学习C++,这里的书都是非常推荐的。
C++ Primer (Stanley Lippman, Josée Lajoie, and Barbara E. Moo)
无须多言,非常好地介绍了C++,而且包含一切细节。
[我自己是读这本书入门的,几乎是最好的C++入门书+参考书。
另外有一本很像的书,叫C++ Primer Plus,相比起来很差劲,大家千万别搞错了。
图书馆里这本书很多,但无论中文英文都很热门,很难借,建议大家阅读电子版]
Accelerated C++ (Andrew Koenig and Barbara Moo)
和C++ Primer包含的范围大致一致,但是只有C++ Primer的四分之一厚。主要是因为它没有试图去成为编程的入门书,而是主要面向学习过其他语言的程序员。因此它的学期曲线非常陡峭,但是适合那些敢于挑战的人。
[图书馆五楼有,编号TP312C++/K78。也有中文版,编号TP312C/1142]
Thinking in C++ (Bruce Eckel)
有两卷,第二卷主要讲述标准库,也很棒。
[图书馆有中文版]
Programming: Principles and Practice Using C++ (Bjarne Stroustrup)
C++之父的另一本书,以C++为主要语言教授编程。对于新手,这本书或许是更好的选择,里面以现代C++为起点,更加清晰,也会减少之后的弯路。
## 实用性
Effective C++ (Scott Meyers)
主要讲述了50条C++的编程原则,内容丰富,可读性很强,涉及了很多重要的语言细节。
[初学者必读的书。
貌似在五楼见过它的身影,不知道为什么搜不到。书本身比较老,图书馆里不好借到,看电子书吧。]
Effective STL (Scott Meyers)
风格同上,但是主要是关于标准库。
[个人觉得没必要看这本书,关于标准库C++ Standard Library Tutorial and Reference是个好得多的选择。]
# 适合中级程序员的书
More Effective C++ (Scott Meyers)
关于C++更多的技巧,没有前一本书那么重要,但仍然很棒。
[图书馆有中文版,被借的光光的。]
Exceptional C++ (Herb Sutter)
More Exceptional C++ (Herb Sutter)
Exceptional C++ Style (Herb Sutter)
看名字就知道,又是一套系列书,和Effective C++讲述的东西差不多,不过是以C++题目的形式呈现的。
[Herb Sutter是个很牛的程序员,他的博客也非常值得一读,这套书我觉得和Effective C++基本旗鼓相当,而且更多地倾向于工程上的问题,细节牵扯更多。阅读顺序建议是先读Effective C++系列,再读Exceptional C++系列。
这套书同样在五楼也有,找到计算机的那一个书架,红红的一排,很显眼。]
C++ Coding Standards (Herb Sutter and Andrei Alexandrescu)
包含了101条编程习惯、问题、原则等等,能帮你写好正确、易懂、高效的C++代码。
C++ Templates: The Complete Guide (David Vandevoorde and Nicolai M. Josuttis)
讲述C++模板的书,从最简单的基础,到高级的模板元编程,还有模板编程的原理,都有涉及到。可读性也不错。
[如果你想成为真正优秀的C++程序员,C++模板无疑是必须知识点之一,而这本书则是这方面最好的教程。
图书馆有中文版,很容易借到,嘿嘿。]
# 比中级程序员略高一点
Modern C++ Design (Andrei Alexandrescu)
介绍泛型编程的好书,几乎可以破坏掉你对C++的一切古老见解。
[同样是必读书,但是需要比较好的基础,新手不要急着读。
图书馆有中文版,但是居然极难借到,而且被翻的很破。]
C++ Template Metaprogramming (David Abrahams and Aleksey Gurtovoy)
关于C++模板元编程。
[很薄的一本书,完完全全在讲述C++模板元编程,书里面过多地偏向于实际解决问题,对于原理描述的不太好。个人觉得不是所有人都需要去阅读,但如果你对C++非常非常专研,不妨试着读一读,很有趣。
图书馆有中文版,很新,没多少人借过:)]
Imperfect C++ Practical Solutions for Real-Life Programming (Matthew Wilson)
讨论了各种C++实际工程中出现的问题,很厚,全是干货。
[很意外的一本书,在图书馆五楼意外遇到,搜了一下,也有中文版。正如题目所言,Imperct C++,这里主要讲述了C++的缺陷,这也并非一本批驳的书,而是告诉你,C++为什么会有这些缺陷,如何去解决他们。书里涉及的问题涵盖了方方面面。推荐,虽然这本书本身名气不大。]
Extended STL Volume 1 Collections and Iterators (Matthew Wilson)
把对C++标准库的讨论推向了极限,描述了方方面面。注意这本书和上一本书是同一个作者。
# 老书
下面这些书已经有些年头了,很多书里的内容可能已经不合时宜了。
The Design and Evolution of C++ (Bjarne Stroustrup)
如果你想知道C++的发展历程,你会在这本书里找到答案。里面包含了C++标准化以前的所有内容。
[简述了C++的历史,大家不妨一读,图书馆有中文版。]
Ruminations on C++ - (Andrew Koenig and Barbara Moo)
C++优秀文章的集子,本身有些老了,不再实用。这本书找了好久都找不到。
Advanced C++ Programming Styles and Idioms (James Coplien)
曾经是C++编程原则方面很好的书,现在有些跟不上潮流了。
Large Scale C++ Software Design (John Lakos)
这本书写在C++98标准之前,已经很老很老了。不过话说回来,如今很多国人的C++工程的书,连这本古老的书都不如。
Inside the C++ Object Model (Stanley Lippman)
关于虚函数、多重继承等等特性实现的书。如果你把上面推荐的很多书看完,这本书可能就不再需要了。