您的位置:首页 > 编程语言 > C语言/C++

关于c++ 学习

2016-07-13 10:49 204 查看
书单 http://lucida.me/blog/developer-reading-list/
c++ primer

c++ primer 上的代码很多都是最佳实践,但是你C++的水准不是由 primer 这本书的质量所决定,而是由你所做过的项目决定的。c++需要不断的练习@vczh


作者:Acjx

链接:https://www.zhihu.com/question/27359048/answer/36311830

来源:知乎

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

作者:匿名用户

链接:https://www.zhihu.com/question/32087709/answer/55497335

来源:知乎

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

对于工程性、技术性的知识,没有实践的感性认识作为基础,读也读不懂。那么问题来了,没有实践就没法读懂,没法读懂自然也就没法去做正确且高质量的实践,问题似乎进入了一个死循环。

学习东西最怕不知道学的东西有什么用处,只要是这样,多半会半途而废。而个问题的深层次原因就是上面说的。

要想打破这个死循环,你唯一能做的就是调整心态,然后读一点就实践一点,一点一点的往前挪。这是学习任何新知识所必需的“痛苦”经历。在这里我给你几点建议,帮助你尽可能的减轻“痛苦”,让你起码能有一个开始:

1.第一遍要通读,而且可以不求甚解,但必须读的有速度,不要在不懂的地方过多的停留,不要试图在第一遍的时候就搞懂所有细节。假如读到后面需要前面的知识,但是又忘记了,可回头看,也可不回看。很多人想用c++ primer学习c++,但是第一遍都没读完就放弃了。

2.接上条。读第一遍的目的是让你知道c++都有什么东西,先混个脸熟,等日后见到一些比较高级的特性心里不会发慌。

3.调整心态,不要急于求成,除非你已经拥有了丰富的编程经验,否则一个假期不可能到达熟练掌握c++的程度。要认清这一点,遇到挫折了不要怀疑自己,大家都是这么过来的。

4.c++不是一门可以边学边干的语言,里面坑很多,要是一知半解就去用,很可能掉坑里了还不知道。

5.如果觉得c++ primer太厚,可以读读作者写的另外一本:Essential C++ (豆瓣)。

6.关于书上的习题,第一遍看的时候可以不做。原因是做习题就会陷入到细节中,学任何东西过早的陷入细节都不是好事情。凡是过早陷入细节的,很少有能坚持到最后的。 

作者:pezy

链接:https://www.zhihu.com/question/29112393/answer/43461605

来源:知乎

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

请问学习完是什么状态,而 C++ Primer 是哪一版课后习题全都自己做过了?

如果你学习完,指的是把书看完了一遍,那容易忘是必然的,又不是读唐诗宋词,谁能不忘?再说,把自己当活字典有何用?

如果是第四版,我建议你再去看第五版,了解 C++ 11 的语法,基于 C++ 11 标准进行练手,在当前环境下,意义要更大一些。

课后习题实际隐藏着很多小项目。譬如:

第七章引入了两个类:Screen 和 Window_mgr,这实际是一个写字板程序的雏形,有没有想过继续完善下?结合 GUI 框架做出一个小玩意来?
从第十二章到第十三章,逐步引入以下类:StrBlob -> StrVec -> String,这实际是在指导你,从底层实现 STL 基础模板?有没有想过将 String 类完善一下?譬如如何实现 c_str() 的功能?你的 String 效率与 STL 有何区别?能否超越?vector 呢?(这个很难超越)set 呢?(这个有可能)
当然还有诸如 Folder 和 Message 类,实际是一个邮件管理系统的雏形,这样的例子不胜枚举。

所以,如果你真的认真做了习题,或是深入思考过这些题目,我觉得应该是不愁练手的。

而你表现的如此急切,倒是有点缘木求鱼的感觉。

==============干货分割线==================

好的C++开源项目不胜枚举,如:
facebook/folly · GitHub

TTimo/doom3.gpl · GitHub
https://github.com/EpicGames/UnrealEngine
v8/v8 · GitHub

qtproject/qtbase · GitHub

ideawu/ssdb · GitHub

zeromq/libzmq · GitHub

miloyip/rapidjson · GitHub

都很值得去研究学习,但你是否能够一口去吃这些胖子,深表怀疑。大多数人,应该是头晕眼花,不明所以的。

自己想做点小项目练手,我也可以提供一些思路:
高精度计时器:参考
QueryPerformanceCounter function (Windows)
STL 容器类:上面提到了。
自己实现智能指针:其实还是习题的范围。
实现类似 Qt 底层的信号槽
实现一个 mini GUI
实现一个类似 http://alleg.sourceforge.net/ 或 SDL 这样的游戏引擎,并做一个小游戏。
实现一个简易的序列化框架,想想如何将对象存取于磁盘上。
有人抱怨
c/c++有什么非常好用的字符处理库吗? ,你来实现一个 std::string 的工具库
将上面这些东西,都封装成 dll/so/lib 的形式,供自己或更多人日后使用。

经历以上过程的洗礼,C++ 能忘就忘了吧,没关系~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: