当时自学C++的时候看的是Jesse Liberty写的《21天学通C++》。抱着VC把书上所有的代码都写了一遍,并用调试器跟了一遍。程序代码比较短,也很简练,针对每个知识点都会有一个实例的代码。
我觉得学C++唯一的窍门就是反复看,反复琢磨,反复写,学指针的时候纠结了很多遍,学明白之后算是完成了第一个阶段。
第二个阶段就是面向对象的内容,类,继承,多态,重载。这里面尤其需要花功夫的就是理解拷贝构造函数的特性;运算符重载;友元函数。当把这些内容理解了之后,就算是完成了第二阶段。
第三个阶段是模版,这个是C++非常有魅力的一部分内容。模版在一些C++标准库中会大量的使用,比如STL。
当你把这些七七八八的内容学完之后,就算是对C++入门了,之后就是要靠多写程序来积累经验了。
初学的时候,我觉得一定要理解好栈内存和堆内存,以及用好调试器,调试器可以让你非常直观的看到程序运行的逻辑以及内存变量的内容。一定要在开始的阶段学会用调试器去跟踪程序出现的问题,而不是光靠一些调试输出。调试器用的熟练,对一些复杂问题的处理会很有帮助,虽然这样会花费一定的时间,但熟练之后就是一马平川了。
按照这个路子,基本上有半年的时间就可以对C++入门了。
我来说说我当时学C++的经历吧。我入门用的是《C++程序设计语言》(就是那本大名鼎鼎的TCPL)和《C++ Primer》。这两本书的经典程度我就不说什么了,基本上可以算是C++程序员的案头书了。基本上我是把这两本书里里面的代码都敲了一遍的,学编程最怕的就是不动手,所以有敲代码的条件的话还是建议多敲点。以上算是对你第一和第二个问题的答案吧,虽然有点跑题,呵呵。
如果要说步骤的话,我的感觉是这个样子的,首先有条件的话最好找来本数据结构,能自己把上面提到的东西都实现了,这样可以帮助你运用你学到的语言。然后参考设计模式等进行重构,深入理解面向对象里面的各种概念,这个阶段如果你认真看过前面提到的两本书的话,相信你应该会对面向对象三大元素有了直观而且深入的理解。最后就是开始看STL,也就是标准模板库之类的东西了。当然这个得看你打算做什么东西,比如说做windows下的玩意的话你还得去看看MFC之类的库(其实win下做东西用C#更快的,呵呵)。以上算是第三个问题的答案吧。
最后我想和你说的是,其实学什么语言不是最重要的,重要的是一种编程时的思想。记得在stackoverflow上有人问程序员都该看什么书,结果最后出来的书单上前10位基本上没有某个具体语言的图书,所以不管在学或者写的时候,多动脑子想想,这样你很快就会入门的。