要学C++,先把C的基础打好。谭浩强的书挺好的,不过可能有点过时,例如C99支持变长数组了,而书中却坚持静态数组一定要大小是已知的。C++与C的差异在于面向对象,因此什么是面向对象很重要,这个建议你先去学习Java,Java是纯粹的面向对象语言,不需要学的多深,只要学会其设计思想即可,可以看看Java2简明教程,然后回头学习C++。
为什么要绕一个圈呢?
个人觉得,第一,C、C++、Java、C#这几种语言是相通的;第二、C++混淆了面向对象和面向过程、可能不能很快的理解面向对象的精髓;第三、Java相对C++简单易学、容易对编程产生兴趣,上来就学习C++肯能觉得枯燥而失去了兴趣;第四、Java与C++各有优势,都学了之后你才能取长补短,才能更专心的去钻研C++的优势之处、精髓之处。第五、学习了Java可以为自己留条后路、哪一天不喜欢学习C++了、哪一天需要Java了有选择的余地。
书就不推荐了,本人觉得,师傅领进门,修行靠个人。书只是领进门得工具,现在网络发达的很,想研究深一点还是要多多爬网。
至于学习时间,可以大至帮你估算一下。
什么都不懂
| 0.5年
具备计算机理论基础
| 0.2年
具备编程理论基础(算法、数据结构、基本数据类型、语法)
| 0.3年
熟练使用C语言编程
| 0.5年
精通C语言在某一方面的应用
| 0.3年
熟悉Java
| 0.2年
熟悉C++
| 0.5年
精通C++在某一方面的应用
前提:平均每天不低于四小时的学习时间。
以上仅代表个人观点,请各位不吝赐教!
反正我是靠孙鑫的教程入门的,入了门看什么书都可以,只是方向不同而以