你可以读 STL 的源码。
那不仅能学語法,还能学很多实现上的技巧。更重要的是可以对 STL 库的使用和理解层次大幅上升。
这个项目的初学者可能严格了点,但是得有往上飞的决心,才能进步的更快,老在基础上转悠,不是积极进取之道。
它能够提高你对类,尤其是比类复杂得多的模版类,的理解。对继承的使用,对象的使用,参数的传递等问题的技巧都可以很好的加强。
对函数重载,代码复用这方面,应该说可以学得比任何书面教材都深。当数据结构和算法的第一手实践资料,是再好不过了。还有涉及泛型编程的知识。
另外的东西,就是编程素养方面的了。比如清新的编码风格,优雅代码的构造,注释的用法等等。项目的模块的划分,项目复杂度的控制等等。这些不只对 C++,以后学任何语言,做任何项目都有点用。这些东西可以说不是学出来的,而是经验,实践出来的。
还有就是自己阅读源码的能力会有很大提高,练习阅读源码这方面,我觉得 STL 也还适合。它不算太复杂的项目,因为它的组件之间的功能划分相当自然,没有太多的干涉。而稍显地层一点的相对复杂的部分,双不是它的核心内容,看不太懂跳过也不太影响其它的部分。可以学完其它的部分之后,再返回来慢慢啃。或者根据心情放弃也没事。我当年读 STL 的时候,可以说是对 C++ 知识的一次飞跃性进步,各种方面都有大丰收。
我由于收获巨丰,所以曾经推荐给很多人试试走这条路。不过他们都表示婉言谢绝,或者虽然表示可以试试。但之后再问,又都表示兴趣转移了……
可能确实是对初学者来说挑战太大了?但我认为,我当年看的时候应该算是初学者,来完之后,可以这么说,我完全相信我从初学者中毕业了~~
首先找一本好书,用书辅助是必须的,讲 STL 的书也挺多的。至于代码,如果你说你想看 vc 的头文件,我想可能性不大。它的代码风格不是很好,命名的也比较诡异,可读性不高。如果你有 gcc 的话,那倒是可以。还有就是,这个你以你的书为准可能好一点,因为 STL 的不同实现不一定是完全相同的(尤其是我上文说的相对复杂的部分,不同的实现版本可能特别不一样),如果你找的书里推荐你读某个版本,你想办法去下一个就可以了。
因为开始阅读无法从整体上理解,而读代码里遇到的相关问题,你上来问是可以,但我估计可能只能大概解释一下,因为涉及的比较深广,所以有的东西不是一两句话能说清楚的。不太关键的地方,我们可能可以提示你跳过去。一开始把精力集中在 語法、数据结构和算法 上可能会好一点。