C++语言衍生于C语言这门古老的语言,其主要特性是面向对象,另外一个广为人知的特点是复杂^_^,没有五年以上开发经历,估计没多少人说熟悉,更没人敢说自己精通。

如果对其复杂的语法知识不甚了解,那么Android的native层代码可就不那么容易理解了。

下面介绍几本C++领域的经典书籍。

1.《effective c++》

 作者为scott Meyers,其为世界顶级的C++软件开发技术权威之一。

    我曾经所购买的为台湾作家——侯捷所译,封面为梵高的经典著作之一——星夜,万物都在不停地运动、生长、死亡、再循环。

    该书我看了3遍才有所感觉。第一遍看完,虽然每个字都认识,但不知所云;第二遍,对照c++基础语法,对少数章节有所共鸣,大部分章节还是不懂;第三遍,经历Android的native层代码开发一段时间后,再次阅读该书,认识到了该书的价值,想通了Android代码为什么那样设计。这本书告诉你在进行C++的类设计时的各种奇巧淫技、陷阱、戒律,告诉一些设计取舍的优缺点。只有经过了大量编程实践后,才能对其中一些约定成熟的规则有深刻的认识。

2.《more effective c++》

    作者同样为scott Meyers,是上面一本书的升级版。

    翻译同样为侯捷,封面油画不清楚为哪个大师的作品。

    该书我只看了一遍,其是第一本的深入版,第一本告诉你表面的结果,这本告诉你内在的原因。其对C++这门语言内部实现进行了很多分析,如类对象指针运行时动态联编所用到的虚函数、虚指针、虚表的实现。

3. 《STL源码剖析》

    作者为侯捷老师,侯老师为台湾知名C++专家,对C++的造诣极深。

    该书对SGI公司实现的stl库进行了剖析,需要较多的模板元编程方面的知识,介绍了常用容器的内部实现机制,如vector、list、heap、dequeue、set、map等的实现,还包括一些更底层的memory分配回收机制。虽然stl库早已整合进c++语言中(正如c语音的libc库),了解内部实现机制对我们的使用仍有很大益处,在什么场景下用什么更高效。该书看了两边,能理解大部分内容。

4.《深度探索C++对象模型》

    作者为Stanley B·Lippman(斯坦利.李普曼),为c++编译器作者。

    译者同样为侯捷老师,封面油画不清楚为哪个大师的作品。

    该书对c++语言对象内存布局和实现机制做了深入探讨。按常理讲,做编译器这么高级和底层工具的人,对语言特性更了解,描述更清楚和透彻。但是,在本书里犯了不少低级错误,书里面连侯捷老师都有说明这个问题,但是侯老师特地交代,还是按照英文版原文原意来翻译,以尊重作者。该书我只看了前几章,个人觉得对码农的内功修炼有很大帮助,但这种内功实在太深了,该书更适合于搞程序语言和编译器的人去看。