首先看一个常见的问题
最近有需求需要写 C++,请问有什么快速教程可以看的吗?
我就知道有一本: 《C++ Primer》, 可是实在是太厚了
想看看有没有什么薄一点的,能基本上手 C++ 的书~
下面看回答
回答1
初学者我强力推荐下面 4 本,请按先后顺序阅读:
- 《C++ Primer》
- 《Effective C++》
- 《More effective C++》
- 《C++ 编程规范》
其中《C++ Primer》是入门必备的,楼主不要怕厚,多花不了你一周时间(就多一周时间?表示疑问??);
第 2,3 两本是进阶的,前 3 本书,精读,写 C++ 够用了。
第 4 本是编程中需要谨记的一切规范。
(注:2,3 两本书也有了针对新标准的《Effective modern c++》)
回答2
C++ 坑比较多,要想短期上手写代码不是不可以,但用在工程里很可能写出不少坑自己又坑伙伴的代码。
《Essential C++》 是我唯一知道靠谱又篇幅比较短的入门书了。 但这还不够,如果急于求成的话,至少还应该通读一遍《C++ 编程规范》,如果能完全掌握,应该能回避工程中会遇到的坑了。 但这本书都是浓缩的精华,解释不够详尽,我不太确定 C++ 初学者对它的接受度。
另外这两本书都没有涵盖 C++ 1x 标准的内容。新标准中引入了不少好用的特性,条件允许的话还是应该尽量采用。
由于 《C++ Primer》 第五版更新到了 C++ 11 标准,我还是建议通过这本书入门,虽然中文版也超过了 800 页,但没有哪个项目会用到全部 C++ 特性,所以作为入门,阅读内容是可以裁剪的。
我的建议:
- “第 1 章 开始”、“第Ⅰ部分 C++ 基础”:详读。这一部分虽然有大概 300 页,但各种语言大同小异,重点比较和你常用语言的差异就能事半功倍。
- “第Ⅱ部 C++ 标准库”:大部分略读,大概知道有什么内容,以后用到再查。注意,用之前一定要查!
- 另外 “第 12 章 动态内存” 一定要详读。
- “第Ⅲ部分 类设计者的工具”:13、15 章详读,其他略读,用到再查。
- “第Ⅳ部分 高级主题 ”:18 章涉及到异常和命名空间的详读,其他略读。
回答3、4
《C++ Primer》 主要是作为工具书,遇到有问题的翻一翻,然后顺便拓展性地阅读一下。最好还是带着问题开始敲代码吧。C++ 只在本科读书时用过,现在基本记不得什么了。
很多大学用的 C++ 教程,足够,再加上 C++ Primer 做工具书,之后就是《Unix 高级环境编程》和《Unix 网络编程》,吃透了足矣。
回答5
“(孟岩)我主张,在具备基础之后,学习任何新东西,都要抓住主线,突出重点。对于关键理论的学习,要集中精力,速战速决。而旁枝末节和非本质性的知识内容,完全可以留给实践去零敲碎打。 “
原因是这样的,任何一个高级的知识内容,其中都只有一小部分是有思想创新、有重 大影响的,而其它很多东西都是琐碎的、非本质的。因此,集中学习时必须把握住真正重要那部分,把其它东西留给实践。
对于重点知识,只有集中学习其理论,才能确保体系性、 连贯性、正确性,而对于那些旁枝末节,只有边干边学能够让你了解它们的真实价值是大是小,才能让你留下更生动的印象。
如果你把精力用错了地方,比如用集中大块的时间来学习那些本来只需要查查手册就可以明白的小技巧,而对于真正重要的、思想性东西放在平时零敲碎打,那么肯定是事倍功半,甚至适得其反。
“因此我对于市面上绝大部分开发类图书都不满——它们基本上都是面向知识体系本身 的,而不是面向读者的。总是把相关的所有知识细节都放在一堆,然后一堆一堆攒起来变成一本书。反映在内容上,就是毫无重点地平铺直叙,不分轻重地陈述细节,往往在第三章以前就用无聊的细节谋杀了读者的热情。
为什么当年侯捷先生的《深入浅出 MFC》和 Scott Meyers 的 《Effective C++》 能够成为经典?就在于这两本书抓住了各自领域中的主干,提纲挈领,纲举目张,一下子打通读者的任督二脉。可惜这样的书太少,就算是已故 Richard Stevens 和当今 Jeffrey Richter 的书,也只是在体系性和深入性上高人一头,并不是面向读者的书。”
个人总结
- 找一本 300 页左右的任意 C++ 书籍,快速学一遍;
- 学完找个小项目练练手,趁热打铁;
- 开始看《C++ Primer》,根据「回答2&5」的建议,进行详略阅读,课后习题需要完成;
- 精读《Effective modern C++》;
- 精读《More effective C++》;
- 通读《C++ 编程规范》 ,避免在工程项目中踩坑;
- 阅读《Unix 高级环境编程》;
- 阅读《Unix 网络编程》;
- 搞定。
注:其中 7,8 可选,因为我要做 C++ 的后台开发,所以这两项也需要学习。