C++ Primer 与 C++ Primer Plus

好书总是抢手,年初寒假打算借点书回家看,可是想要读的书都被借走了。无奈只能走上二楼夹层里的外文图书区。意外地,西文区有不少好且新书。就比如,C++ Primer,C++ Primer Plus。鉴于同时看过这两本书的人比较少,而且一边倒地推荐没有Plus的版本,这里就进行一下两本书的对比。不过只限于英文原版,很可惜没有拜读轮子哥校对过的C++ Primer中文版。


这里对比的是C++ Primer 5th Edition和C++ Primer Plus 6th Edition,两本书都为C++11标准修订过,增加了新内容。首先对比两本书的目录:

  • 1 Getting Started with C++ 9
  • 2 Setting Out to C++ 27
  • 3 Dealing with Data 65
  • 4 Compound Types 115
  • 5 Loops and Relational Expressions 195
  • 6 Branching Statements and Logical Operators 253
  • 7 Functions: C++’s Programming Modules 305
  • 8 Adventures in Functions 379
  • 9 Memory Models and Namespaces 447
  • 10 Objects and Classes 505
  • 11 Working with Classes 563
  • 12 Classes and Dynamic Memory Allocation 627
  • 13 Class Inheritance 707
  • 14 Reusing Code in C++ 785
  • 15 Friends, Exceptions, and More 877
  • 16 The string Class and the Standard Template Library 951
  • 17 Input, Output, and Files 1061
  • 18 Visiting with the New C++ Standard 1153

这是C++ Primer Plus的目录,可以看到前面花了大量篇幅讲解编程基础知识。像什么是变量,变量如何表示,变量如何保存,调用函数的机制,详详细细地用简单的小例子加上图片,以幽默的语气解释清楚。不过缺点是有不少的错误,姑且算是印刷错误,如果读者在阅读过程中没能发现这些错误,就不能算是真正学会了C++基础。

C++ Primer Plus,就如大家所说,十分适合没有编程基础的初学者,打算把C++当做首门语言的学生们使用的。用不少小例子和大篇幅解释程序细节,但是在难度较大的部分,并没有深入,可能导致初学者一头雾水,对初学者来说 我的建议是跳过去 知道有这么个东西就好,以后需要使用到的时候 或者见到相关名词的时候,知道可以在哪块习得这部分知识就足够了。


  • Chapter 1: Getting Started 1
  • Part I: The Basics 29
  • Chapter 2: Variables and Basic Types 31
  • Chapter 3: Strings, Vectors, and Arrays 81
  • Chapter 4: Expressions 133
  • Chapter 5: Statements 171
  • Chapter 6: Functions 201
  • Chapter 7: Classes 253
  • Part II: The C++ Library 307
  • Chapter 8: The IO Library 309
  • Chapter 9: Sequential Containers 325
  • Chapter 10: Generic Algorithms 375
  • Chapter 11: Associative Containers 419
  • Chapter 12: Dynamic Memory 449
  • Part III: Tools for Class Authors 493
  • Chapter 13: Copy Control 495
  • Chapter 14: Overloaded Operations and Conversions 551
  • Chapter 15: Object-Oriented Programming 591
  • Chapter 16: Templates and Generic Programming 651
  • Part IV: Advanced Topics 715
  • Chapter 17: Specialized Library Facilities 717
  • Chapter 18: Tools for Large Programs 771
  • Chapter 19: Specialized Tools and Techniques 819

这是C++ Primer的目录,作者清晰地分成了四大部分,语言基础、库、面向对象、高级主题。与Plus对比起来,阅读更加顺畅了,每页的信息量很足,提到了许多没有在Plus中出现的小细节。全书编写顺序十分合理,刚好之前我在写一个解析器,看到内容按照变量 表达式 语句 函数 类的顺序进行介绍,接受吸收速度很快。不过回过头来看,这本书并不适合没有基础的新手小白。第一章开始就不断提到需要后续内容的知识点,由于之前阅读过C++ Primer Plus,我知道这些名词方法是什么意思,可是对新人来说 信息量过大,就像在啃天书。

C++ Primer在文中提供了许多最佳实践和易错注意点。可以说前16章是必须要熟练掌握的,日后可以把这本当做工具书、参考书,要用的知识点都在上面,通过目录也可以迅速指到需要加强学习的部分。当然最终还是要写入记忆里的,写写练习题还是很有用的。


练习部分,C++ Primer Plus的练习是每章一出,放在章节末尾,而C++ Primer是放在每小节的后面,而且在图书馆看到了比较厚的一本对应的习题讲解。

读者可能认为800-1000页简直太厚了,我也是一本花了4个星期,另一本花了3个星期才看完的,推荐先阅读C++ Primer Plus再阅读C++ Primer,这样能够加深知识的印象。不过程序还是要多写才能熟练,没有上机时间怎么可能进步


自从第一次在学校图书馆看到了一本叫「图解TCP/IP」的图灵系列的书,就爱上了图灵系列。当然还有喜闻乐见的O’Reilly动物书,瞄准了这些总没错。下面提供两本书的PDF下载链接,英文版的,来源是互联网

https://github.com/enihsyou/Books

0%