我认为自己是一位经验丰富的Java开发人员,并计划开始学习C ++。
如果您有相同的经验,即在Java之后学习C ++,我想听听您对这样做的最佳方法的看法。
[更新]“最好的方法”没有得到很好的量化。我正在寻找的是利用我现有的Java知识和编程经验,以便我可以快速提升C ++。
答案 0 :(得分:18)
我已经向Java人员教过C ++,尽管我向他们学习了另一个方向。
你对C感到满意吗?如果没有,请阅读Kernighan and Ritchie。 C ++的许多特性解释为希望C ++成为具有C语言基本表达式语法的“更好的C”。
你应该得到Stroustrup。
布鲁斯·埃克尔斯认为Thinking in C++很好。
我使用了The C++ FAQ Book,Cline,Lomow和Girou;我经常提到它。 Marshall Cline也有C++ FAQ content on his site。
您也可以查看C++ for Java Programmers。我不懂这本书,但它看起来不错。
答案 1 :(得分:9)
我的建议是编写高度基于指针的东西,如链表库,BST库等。代码应该是无STL的,类似于纯C.你应该构建应用程序如果它是你的第一个C / C ++代码,那么使用这样的库(例如排序算法?)并学习如何处理肯定会出现的所有陷阱。
在我看来,了解C ++最重要的基础是理解类和结构的指针和低级内存表示。这就像一个启蒙之后,一切都很简单明了;)
答案 2 :(得分:5)
我将从Scott Meyers的Effective C ++和More Effective C ++开始。这两本书重温了C ++的一些非常好的最佳实践。
答案 3 :(得分:2)
其他人已经指定了所需的书籍。我想补充几点需要注意:(背景是java)
delete
在堆上分配的内存new
。
在写作时尽量记住FAQ中的Free-Store
management
C ++应用程序。答案 4 :(得分:2)
我强烈不同意首先学习C,并尝试从有效的书籍中学习C ++,虽然它们很优秀。相反,得到Andrew Koenig和Barabra Moo的Accelerated C++副本 - 这是由两个最初的C ++开发小组编写的,将教你如何使用现代C ++特性。
答案 5 :(得分:1)
安迪和查理已经把书给了你,所以我会指出boost图书馆和Qt框架。
Boost为您提供了一些基本功能,因此您无需从头开始创建所有内容。
正如您所知,Qt是一个GUI框架,我发现它非常有趣。有一本名为“C ++ GUI Programming with Qt 4”的书,涵盖了学习Qt的所有重要主题。
答案 6 :(得分:1)
这听起来有点滑稽,但你要求最佳方式,而不是最快。在你学习C ++之前,我建议你从首先学习C 开始。 Kernighan and Ritchie是有史以来最好的语言书籍之一。当你了解C和Java时,你将能够在一个合理的C ++子集中编写好的,清晰的程序,几乎不需要额外的努力。
答案 7 :(得分:1)
K&R和Stroustrup是经典的,最终你应该得到它们,但我不认为它们是C ++初学者的好介绍。在现代C ++中思考的是在类,模板,异常和流中思考,其中没有一种可用C语言。
我会推荐一本关于C ++的大学级教科书,如Deitel and Deitel。
在玩完之后,你应该专注于学习编写一个类似于内置类的类。这意味着提供一个复制构造函数operator=
,operator==
,operator<<
等。在此过程中,您将遇到嵌入在C ++语言中的各种概念。我会同意Effective C++上的其他人一旦你对基础知识感到满意就必须阅读。
答案 8 :(得分:1)
答案 9 :(得分:1)
了解Qt。相信我;我既是Java和C ++开发人员;我可以告诉你Qt使C ++语言更接近Java。不要只学习裸骨的C ++。
使用Qt的C ++可以让你的工作效率更高。我曾经将很多不同的库(Boost,Intel,数据库连接器等)组合在一起,只是为了实现我们所做的那些事情(高性能/实时计算)。最后,我发现我所需要的80%以上已经包含在Qt中。更不用说,imo,Qt拥有我所参与的任何框架/库的最佳文档,这使得非常很容易只是自己学习。
试一试,亲眼看看。
免责声明:我只是一名开发人员 - 我不为诺基亚工作。 = P