C++学习路线及书籍推荐

语言入门

  • 《C++ Primer》
    最新版本:第三版(第四版国外已上架,国内一些网上书店也在预订中)
    适合有丰富C经验,缺乏C++经验的。不过我个人一直认为此书带着过于强烈的C语言的痕迹,对于C++的学习未必是好事。

  • 《The C++ Programming Language》/《C++程序设计语言》
    最新版本:第三版特别版
    简称TC++PL,有其他语言的丰富经验的。(也有人简称之为“TCPL”,但需与另一本《The C Programmer Language》区分开来)

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

以上几本书都有相应的中文版,而且翻译的质量都不错。上面的书未必都需要读一遍,但无论如何,TC++PL是应该阅读的。

进阶A

这个路线侧重于语言本身

  • 《Effective C++》
    最新版本:第二版(第三版国外已上架,国内一些网上书店也在预订中)
    简称EC。C++程序员必读!很多时候,我们说C++圣经不是指TC++PL,而是这一本。《The Pragmatic Programmer》一书中写到:“一旦你发现自己要参与C++项目的开发,赶快跑(不要走)到书店去购买Scott Mayer的《Effective C++》,可能还要《More Effective C++》”。

  • 《C++ Coding Standards: 101 Rules, Guidelines, and Best Practices》/《C++ 编程规范》
    个人认为此书应为C++程序员必备的案头书。几乎Effective系列和Exceptional系列都在这里得到了总结。最新的模版、异常的业界经验都在这里的到了体现。可能的唯一缺陷就是对一个新手而言,关于“为什么这么做”的问题,解释的不够。
    我的看法是:如果你不理解其中的条款,记忆,并且照做;如果你理解其中的条款,我猜你一定会同意书中的观点。我认为这本书中的内容至少在2009年以前都不会过时,人们将广为传诵它制定的101条戒律。
    还不知道他的简称,也许“101”会成为一个候选者?

提到《Effective C++》,那么另外三本书一一浮出水面: 《More Effective C++》 《Exceptional
C++》 《More Exceptional C++》。 新书《Exceptional C++ Style》也是值得一看的好书。
上述几本书,一本也不应该放过。 个人建议上述书籍按顺序阅读。并且,在将来反复阅读这几本书。

进阶B

这个路线侧重于程序库。

  • 《The C++ Standard Library》/《C++标准程序库—自修教程与参考手册》
    听说过STL吗?这本书会教你最基本的,也是最重要的STL的使用。这本书,应该是必读的。

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

  • 《Generic Programming and the STL: Using and Extending the C++ Standard Template Library》/《泛型编程与STL》
    这本书理论性较强,但是真的很严谨,而且并不是非常难懂。理解其中对于Concept的解释,将是非常重要的。

  • 《C++ STL》
    这不是讲述使用程序库的,而是讲述程序库实现原理的。肠胃不好的,需要慢慢吸收。
    这个路线的书,仍然是建议按顺序阅读。
    进阶A、进阶B两个路线应该是可以并行的。

其他进阶参考书
提出这些参考书,只是避免争议,也为开阔视野,笔者并不曾完全读过所有的。

  • 《Thinking in C++》/《C++编程思想》
    这本书及其中文版传言好坏都有,没有认真看过,不做评价,如果确有兴趣,不妨尝试一下该书。

以下几本书基本上涉及的都是语言本身,大体上可以按照以下的顺序阅读。

  • 《C++必知必会》
    如果早一年,这本书将是重量级的,然而它被101和《Exceptional C++ Style》盖过一头。

  • 《C++ Gotchas: Avoiding Common Problems in Coding and Design》/《C++程序设计陷阱》
    这又是一本我未曾读过,而且广受好评的书。

  • 《STL 源码剖析》
    这本书我刚到手,就被人”借”走,以至于到现在也没有看过。看过这本书的朋友,可以给一个合适的评价。

高级

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

  • 《Inside The C++ Object Model》/《深度探索C++对象模型》
    C程序员读后一定会觉得C++原来并不神秘。

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

  • 《Modern C++ Design Generic Programming and Design Patterns Applied》/《C++设计新思维——泛型编程与设计模式之应用》
    简称MCD。在阅读MCD之前,建议先阅读一下《C++ Template》。

  • 《对象揭秘:Java、Eiffel和C++》
    你对C++不满吗?这本书可以部分地帮你完成抱怨的目标。也许它还可以让你不迷信C++。

最后,一份C++标准文档也是应该加以咀嚼的。
还有一些书籍,并不能简单的归于C++,也难以在纯粹的书本学习中加以掌握。《Design Patterns》/《设计模式》一书就归于此类。

所有上述的书籍,要么谈论C++语言本身,要么谈论STL的,要么兼而有之(当然严格讲STL也是C++语言非常重要的一部分)。偶尔,某些书中条目也会涉及实际工程。这些书并不是C++软件开发的全部,但是他们很重要。阅读这些书,未必需要化费太多的精力,有时候是会困难,但也有时候会很快速。
最后,编程语言并非计算机科学技术的全部,尤其对于在校的学生来说,打好基础、开阔视野都是非常重要的。

  1. 《C++ Primer》Lippman写的,经典中的经典,C++入门的宝典,读完这本书,基本语法过关,部分技巧掌握。
  2. 《The C++ programming language》C++的创始人Bjarne Stroustrup写的,这本书的权威性毋庸置疑,而且这里面讲到了一些比较底层的东西,如果你看过了《C++ Primer》的话,这本书可以跳着看,懂的就跳过。
  3. 《Effective C++》 Scott Meyers顶级大师用活泼幽默的语言写的书,这本书中讲到了许多应该注意的问题,这是十分值得购买的书。(Lippman曾把程序员分为看过effective c++的和没看过的两类。由此可见此书的重要性)
  4. 《More Effective C++》上书的姊妹篇,这本书里讲到了许多关键性的技术,对提高程序的效率是非常有帮助的。
  5. 《Advanced C++》这是一本神奇的书,里面讲到了许多连C++设计者都没想到的妙法,解决了许多看似不可能解决的问题。Scott Meyers曾隆重推荐过的书。
  6. 《Inside the C++ Objects Model》又是Lippman的大作!这本书讲到了他在开发第一个C++编译器时的许多想法,彻底解析了C++底层机制是如何实现对象模型的,看过这本书,你对C++的了解会有质的飞跃!从这刻起,你有权力说你是一个C++程序员了!

光学C++语言基本上看完上述的书就是高手了,其他经验要在实践中累积,这是我个人的经验。另外,你学了C++还要开发程序,开发软件,无疑要使用MFC之类的东西
《API Programming》和《MFC Windows 程序设计》两书值得一看。这两本书能迅速提高你的实践水平。

【学习基本路线图】

顺序:基本原理(进制转换啊什么的) –> C(学习能力强的可以从C++开始) –> API –> C++语法 –>
操作系统原理 –> MFC –> 数据库 – 数据结构 – 硬件 –
领域编程(根据你自己以后的行业特点的专业性编程)

   最后从数据库开始可以交叉进行。

【学习方法】

  • 基本原理:

    这个部分主要理解就行了,至于是不是非要记住十六进制怎么转换二进制啊,CPU结构图啊什么的,完全没有必要。记住主要是理解,记忆并没有什么意义,有些人略过这些一样能学会C++,之后回头再详细学习效果会更好,更开始就大概知道有这个回事就行了。

    推荐书籍:《微机原理与接**术》作者:牟琦 这本书看到第23页就行了,知道进制转换的大概方法和有这么一回事就行了。
    《汇编语言》第二版 作者:王爽(只看第一,二,三章) 这是第一本让我觉得过人也能写出好书的书,相当经典,汇编领域过人写的出还真的是不错,一本80X86领域的就是这本,WIN32的就是罗云彬的那本 《WIN32汇编程序设计》第三版,现在好像出第四版了,叫什么玉拙成器什么什么的。

  • C

    既然我们是学习C++,那么C就是路过的,C是一门面向过程的语言(哲学说法,现在你还不需要懂,不要怕呵呵),而C++是一门面向过程的语言(也 是哲学呵呵,不懂先别着急,这个要慢慢去领悟),说白了,C++是C的一个超集,对C做了一些有意义的扩充,这个说多了暂时你还不明白,总之这个阶段的学 习有些人喜欢从C开始,有些人喜欢直接从C++开始,其实多半都是一样的,学了C以后你学起来C++更加简单,因为很多东西都是一样的,著名的《C++ primer plus》就把C++的学习分成了两个部分,C部分和C++部分。

    推荐书籍:如果你想快速掌握C和C++的基础语法,那么选择谭浩强的绿本本吧,这本书写的很简陋,快速浏览一下C和C++的基础语法还是可以的,真 正掌握就算了吧。

    还有网上不论青红皂白推荐的书下面做一下介绍:
    回复最多的无非就是两本: 谭浩强 C 和 K&R C,K&R是C的创始人,他们的书根本不适合新人去看,到不是有多难,他们只是在建立一种标准,而不是一本真正的教程。

    个人认为真正想学习C的人,看清楚了,真正想学习C的人啊,不是路过的人,应该看一下《C primer plus》,这本书有些罗嗦,但是讲的很全面,可以当字典使用。

  • API

    这部分的话,其实是慢慢积累的,你去Google查一下什么是API就好了,学习Windows原理的时候你会理解到是个什么东西的,大概说起来就 是微软给我们提供了一些封装好了的函数,我们可以调用过来实现一些简单而且常用的功能,比如MessageBox是弹出一个窗口,你只要在他的参数里自己 设定大小啊和现实什么啊就是了。
    推荐书籍:MSDN 微软提供的字典式的帮助文档,这个是你积累API什么的最好的老师。

  • C++
    重点来了,如果你前面学习了C,那么你现在可以先温习一下C的语法,因为在你没有学习面向对象之前,C和C++的语法是基本一样的,注意是基本,循环 啊,指针啊,数组啊,结构啊,函数啊,+—×/%啊什么的。然后你要开始重要的一步:学习C++自己独有的特性,类啊,封装啊,重载啊,多态啊,继承啊什 么的,这些都是非常重要的,在你日后写Windows程序的时候都是经常用到的知识,并且是必不可少的。

    推荐书籍:《C++ primer plus》 第五版中文版 这本书详细到真是有些罗嗦,C++的每一个角落都不放弃,学习的时候不求掌握所有的特性,但是必须去理解,以后你遇到了不懂的或者比较生疏的可以回头来 查,这样学习的才比较扎实。

    《C++ primer》第四版 这是C++领域里我读过最经典的书籍之一了,在这本书里,你将震惊于大师的技法和教学角度,你会经常感叹,再感叹。这本书呢,不是你现在学的,而是等自己 写出几个像样的Windows程序以后,再回头来看,你才能有所领悟。

  • 操作系统原理

    这个其实是学习MFC(下一步要介绍的)必须学习的,如果你用C写过Windows程序,你会对这个了如指掌,但是我们只是学了语法,这部分就必须 去学习,其实很快,我们不必知道的太多,只需要得到必须的就可以了,这部分当年我一天学完的,就是看孙鑫的视频学会的(只看视频第一章就行了,第二章讲C++特性 的你也可以看看,MFC从第三章开始,以后接着看)。
    推荐书籍:这里推荐孙鑫的视频,这部视频在《深入详解VC++》这本书的的配套光盘里,非常经典,不可多得的过人讲解的超高水平的视频,看不懂就多 看几遍,我当年看了三遍才看懂(光看是绝对看不懂的,自己跟着写才行)。你只要看第一章就行了。

  • MFC
    坚持住,学完这部分你就能写出真正的WIN32应用程序了,MFC呢就是微软把你所需要实现的功能进一步封装起来了(比API),你只需要实现你的功能, 至于程序的框架(最大化按钮啊,关闭按钮啊,边框啊,标题啊,什么的都给你提供好了,不用你自己用API代码实现了),具体的你学完操作系统原理(看完孙鑫的视 频第一章以后才能理解,现在不多说)。

    MFC虽然给编程提供了诸多方便,但是无形中给学习却增加了难度,这部分要坚持住,多看几遍孙鑫的视频,好好的去啃才能有收获。

    推荐书籍:孙鑫《VC++深入详解》,主要是视频比较著名。
    侯先生(台湾)《深入浅出MFC》第二版,这本书很老了,但是依然是MFC的经典,但是是你以后真正拿MFC写出程序了以后,再去看,不然你绝对是看不 懂的,现在不着急看。

  • 最后你们都会有自己的想法了,之后你要设计的领域都写在路线图里了,至于更高级的领域,设计模式什么的,是有一定经验以后再去加深的。
    这个时候你要做的,就是还要不断的学习

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页