我认为自己是一名经验丰富的Java开发者,计划开始学习C++。
如果你有相同的经历,即在学习Java之后学习C ++,我想听听你对如何做到这一点的想法。
[更新] “最佳方法”没有很好地量化。我要的是利用我现有的java知识和编程经验,以便我可以快速掌握C ++。
我曾经教过Java程序员学习C++,尽管我是从另一个方向学习的。
你是否熟悉C语言?如果不熟悉,请阅读Kernighan和Ritchie。C++的许多特殊之处都可以通过希望C++成为具有C基本表达式语法的"更好的C"来解释。
你应该看看Stroustrup的书。
我很欣赏Bruce Eckels的Thinking in C ++。
我经常参考Cline,Lomow和Girou的The C ++ FAQ Book。Marshall Cline在他的网站上也有C ++ FAQ内容。
你还可以看看C ++ for Java Programmers。我不知道这本书,但它看起来还不错。
我的建议是编写高度基于指针的东西,比如链表库、BST库等。代码应该是无STL的,类似于纯C。您应该使用这样的库构建应用程序(例如排序算法?),并学习如何处理所有肯定会出现的陷阱,如果这是您的第一个C/C++代码。
在我看来,了解C++最重要的基础是理解指针和类和结构的低级内存表示。这就像一种启示,之后一切都变得简单明了;)
delete
删除使用new
在堆上分配的内存。在编写C++应用程序时,请记住FAQ中的自由存储管理。我强烈反对先学习C语言,也不建议从Effective系列书籍中尝试学习C++,尽管这些书籍非常出色。相反,获取一份由Andrew Koenig和Barbara Moo撰写的Accelerated C++,这是由最初的C++开发组成员编写的,将教你如何使用现代C++特性。
学习Qt。相信我,我既是Java开发人员,也是C++开发人员;我可以告诉你,Qt使得C++语言更接近于Java。不要只学习裸的C++。
C++与Qt让你的生产力无限提高。我曾经结合了很多不同的库(Boost、Intel的、数据库连接器等)才能实现我们所做的东西(高性能/实时计算)。最后,我发现我需要的80%以上已经包含在Qt中。
更不用说,在我所使用过的任何框架/库中,Qt都有着最好的文档,这使得自学变得非常容易。
试试吧,亲身体验一下。
免责声明:我只是一个开发人员——我不为诺基亚工作。=p
K&R和Stroustrup是经典之作,最终你应该阅读它们,但我不认为它们适合C++初学者。在现代C++中思考意味着思考类、模板、异常和流,这些都不在C语言中。
我建议初学C++的人阅读一本大学级别的教材,比如Deitel and Deitel。
在玩耍一番之后,你应该专注于学习编写一个行为类似于内置类的类。这意味着提供复制构造函数、operator=
、operator==
、operator<<
等等。在此过程中,你将遇到嵌入在C++语言中的各种概念。一旦你掌握了基础知识,我会同意其他人的看法,Effective C++是必读的。