关于C++学习
来源:互联网 发布:五五开这个人 知乎 编辑:程序博客网 时间:2024/06/05 00:27
关于C++瓶颈:
链接:https://www.zhihu.com/question/19977459/answer/16567687
瓶颈期其实就是选择方向的时期,因为C语言能做的事情实在太多了,上至游戏开发,下至操作系统,中间还可以做做驱动,做做算法,做做工具软件,等等。此时,你要做一个决定,找一个你喜欢的方向,研究下去。
相信学习之初,都是学的语法之类的与应用关联较小的东西,而要深入的话,必须做点真正“有用”的东西。
怎么做?
1、自己动手做点较大规模的代码,比如一个小游戏,一个小工具,一个小的操作系统,规模要在5000行以上,如果能做到一次完成这么大规模的代码,那么你的能力会有非常明显的提升。
2、自己分析、调试、修改超过10万行的代码,这个可以是别人的成品源码,可以是Linux内核里的一个驱动,可以是任何东西,一个优秀的开发人员,必须具备掌握大规模代码的能力。
3、重复第一条,精简你的代码,把5000行精简到4000,3000,2000,甚至是1000,而功能不损失,这样就可以提高算法的能力,以及对编程细节的掌握。
4、重复第3条,把已经精简过的代码,再扩充新功能,使其规模增长到2000,3000到5000行,然后再试试精简。
相信你如果把以上4条都完成,那么必定能突破瓶颈期。当然,也有很多人败在这里,或者被吓倒。
另外,好的开发人员离不开优秀的工具,你需要一个好的开发/调试工具,工欲善其事,必先利其器,不管是VIM或者Source Insight,不管是免费的还是盗版的,你需要掌握至少一种工具,否则,10万行代码你都不知道从哪开始看。代码管理工具也是很重要的,比如github,svn等等,不然当你发现你想回忆一下一星期前代码是什么样的时候,你会发现,哎呀,我忘了!
最后,编码风格也很重要,好的注释,好的缩进和空行,会让你开发变得轻松。
关于C++ Primer的学习:
链接: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++ 能忘就忘了吧,没关系~
- 关于学习c语言
- 关于学习C/C++
- 关于C的学习
- 关于学习C语言
- 关于C的学习
- 关于学习C语言
- 关于C语言的学习
- 关于我的学习C
- [转]关于学习C/C++
- [c语言学习]关于指针
- C语言学习--关于指针
- 关于C#中委托的学习
- [C++]关于i++和++i的学习
- 关于C语言学习单片机的论文
- 关于C/C++的学习群
- 关于寒假学习objective-c的感想
- 关于c/c++的学习问题一
- 关于字符串流的学习(c++)
- Unix:线程池的例子
- Nginx代码解析
- 贪心算法—Problem A
- 点击动画 波纹效果 主要用来做引导动画
- HttpClient4 基本操作
- 关于C++学习
- 一篇基于pthon和scikt-learn的关于机器学习的介绍
- hrbust 哈理工oj 1989 营救小组【BFS】
- 使用jdbclogger将所有sql完整的打印出来
- 希尔排序
- HDU 3068_求最大回文串_manacher算法_O(n)
- LeetCode: Factorial Trailing Zeroes
- HDU 2010 水仙花数
- DateTimePicker 顯示為空設置