各位,因为一直有人再问C++的相关问题,所以今天这里就简单写一篇推送,一来给出一些学习建议,二来带来一些学习资料,供大家学习。由于能力有限,以下内容不准确或者不到位的地方还请大家批评指正。
对C++的一些认识一 一直在说C++是C的继承和发展,单从这句话来说没错,但具体到学习过程中,最好还是忘掉这句话, 把它当成一门新的语言去学习,这有利于去除你被C固化的一些思维。C++可以是面向过程的,因为C能做的它也能做;C++也可以是面向对象的,此时封装(数据抽象)是基础,继承是手段,多态是目的;C++还可以是泛型编程的,此时参数化类型(概念抽象)是基础,模板是手段,通用是目的。
目前来说,C++的主要应用领域有服务器端开发,游戏开发,PC端尤其是windows桌面软件,虚拟现实,数字图像处理(比如OpenCV),分布式系统,操作系统,驱动程序等等,不得不说其功能强大,当然这也是它比较难学的原因。
C++学习建议/路线一 我个人一直坚持一个观点,由于学习个体不同,适合每个人的学习方法是有差异的,给出学习路线这事本身就是困难的,因此下面只是结合自身经验,在宏观面上的角度给出一些建议,并推荐了一些比较不错的书籍,供大家参考。个人认为C++学习可分为3个阶段:
第一阶段是C++基础知识学习。毫无疑问,第一层就是入门,选定一本入门书,开始学习。比如:大学教材、《C++ Primer》或Stroustrup撰写的经典《C++程序设计语言》,他这几年的出新作《C++程序设计原理与实践》也不错,《Essensial C++》也可以,上面几本书一般大学的C++课程也就到这了,也是通常所说的入门篇。另外《也C++ 标准程序库》及《The C++ Standard Library Extensions》可当作参考工具。
《C++ Primer》这本书是Lippman写的,经典中的经典,名声压过C语言的那本《C Primer Plus》,C++入门的宝典,基本涉及了C++所有的基础知识,读完这本书,基本语法过关,部分技巧掌握,缺点就是确实太厚了。
《The C++ programming language》是C++的创始人Bjarne Stroustrup写的,简称TC++PL或TCPL(注意与K&R那本C语言的区分开),权威性毋庸置疑,也讲到了一些比较底层的东西,如果看过《C++ Primer》,这本书可以选着看。
《Essensial C++》可以看做是一本C++的字典了,也就是上述两本的的简化版,可以一读。
第二阶段是C++进阶学习。推荐书籍有《Effective C++》《More Effective C++》《Exceptional C++》《More Exceptional C++》,这四本由于难度的原因建议按照以上顺序阅读。另外还有《Effective STL》及《C++编程规范》等,读完这些才勉强可以说一只脚踏入C++开发的大门了。
《Effective C++》简称EC ,是顶级大师Scott Meyers写的书,C++程序员必读!很多时候,我们说C++圣经不是指TC++PL,而是这一本。有人说c++程序员可以分为两类,读过effective c++的和没读过的,几乎在所有c++书籍的推荐名单上,本书都会位于前三名。
《More Effective C++》是上书的姊妹篇,这本书里讲到了许多关键性的技术,例如virtual constructors,smart pointers,reference counting,proxy classes,double dispatching,绝对值得一读。
《Exceptional C++》和《More Exceptional C++》主要是谈工程方面的细节和经验,难度在上面两本之上,建议读完effective系列再读。
《C++ 编程规范》这本书几乎是对Effective和Exceptional系列的总结,一些模版、异常的业界经验都在这里的到了体现,个人认为看过那两个系列的这本书可简看或不看。
第三阶段是全局深入了解C++。这一阶段要开始学习C++中一些原理层面的知识并要试着站在全局的角度去思考问题,为以后项目实战打基础。推荐书籍有《深入探索C++对象模型》、《C++沉思录》、《STL源码剖析》,再深入一些,可看关于模版及模版元编程的书籍如《C++ Templates》、《C++设计新思维》、《C++模版元编程》。
《深入探索C++对象模型》讲了虚函数是如何实现、多继承时基类是如何在内存中排布的和所有影响性能的东西,同时讲了编译器如何实现C++的对象模型,建议一读,不过里面不少错误,读的时候自己辨别一下。
《STL源码剖析》是华科出版的,侯捷老师有一句名言:任何一个C++学生写出来的程序在SIG STL面前只能算三流程序,不妨多看看STL源码。这本书从源代码的角度分析STL中各种容器和算法的实现,基本可以代替任何C++的数据结构的学习用书了,推荐阅读!
《C++ Templates》这本书可以说是模板学习的圣经和权威了,全面地介绍了模板的各个方面,在阅读STL、Boost或者Loki的源代码之前,建议先阅读本书。
《C++沉思录》英文名为《Ruminations on C++》, 也是鼎鼎大名了,抛开其他的不讲,我个人最喜欢的是这本书的写作风格,它不谈复杂的语法,直接罗列出C++中常用的技巧,诸如handle类,智能指针,函数对象等,还从源码层次分析了这些技术的实现,建议大家好好读一读,定会收获不少。
《C++设计新思维》介绍了基于策略(policy-based)的设计、type lists 和泛型编程基础, 然后讲到了许多有用的设计模式(包括small object allocators, functors, factories, visitors, and multimethods) 如何被高效、模块化、清晰的泛型代码实现,可以说是泛型编程鼻祖级书籍了,感兴趣的可以阅读一下。
《C++模版元编程》更多的是讲解boost::mpl,想要深入理解mpl的可以看一下。
C++的一些学习资料一
上面这些书籍我们整理出了大部分的电子版,但由于各种原因,有些版本稍老或者清晰度稍差,不过不影响阅读,还请大家谅解,这里建议大家学习还是尽量去购买纸质书籍。
获取方式:大家在公众号内回复C++或者留言评论即可获得。
▼往期精彩回顾▼计算机专业基础学科那点事(学习资料大汇总)
对于键盘,你真的了解吗?(键盘常识大汇总)
最近,996工作制又火了
|
|