10

在我的大学里,我的大部分课程都是用 Java 编写的。我最近还在暑期实习中学习了 C#(和 Visual Studio 环境)。现在我正在参加计算机图形学入门课程,教授该课程的研究生更喜欢我们使用 C++ 通过 GLUT 访问 OpenGL 绑定。

有没有人有任何关于如何从 Java/C# 到 C++ 的良好过渡的好资源?显然指针将是一个大问题,但我应该注意的其他任何事情?任何教程、指南等都会非常有帮助!

谢谢!

4

10 回答 10

8

是的,我也被同样的虫子咬了。该大学倾向于依赖 Java,然后允许您选择在项目期间想要使用的语言。

最好的方法是直接加入。从小处着手,迈出小步,然后在谷歌上搜索那些让你感到困惑的东西。还可以查找已发布其源代码的项目。看看他们如何构建他们的程序。基本上,只是修补概念。网络上有很多信息。

让它变得有趣并抓住一本 C++ 游戏开发书,这样它就不会太快变得麻木。

这里有一些我在学习时发现有用的地方

http://www.cprogramming.com/

http://www.wikipedia.com

http://www.cplusplus.com/

于 2008-08-21T05:25:22.373 回答
4

如果您已经了解 Java/C#,我建议您直接使用 C 而不是 C++。根据该网站,GLUT 对 C 的绑定与 C++ 的绑定相同,因此您应该做好准备。无论如何,学习 C 的最佳方式是购买并阅读“The C Programming Language”的副本,然后坐下来使用 C 编译器,让你的东西运行起来。

于 2008-08-21T04:51:20.443 回答
2

Scott Meyers 的《Effective C++》是一本帮助你学习 C++ 的好书。为您提供该语言的概述,并介绍您将在基本上任何 C++ 程序的整个开发过程中使用的许多关键概念。

于 2008-08-21T05:00:56.613 回答
2

Scott Meyers 的《Effective C++》是一本帮助你学习 C++ 的好书。为您提供该语言的概述,并介绍您将在基本上任何 C++ 程序的整个开发过程中使用的许多关键概念。

我喜欢这本书的所有 3 个版本,它是我在 UT 大四时上过的一本书,但它不是一本入门书。尽管在阅读 Meyer 的著作之前,您肯定不会成为编译器的一员,但您可以在 C++ 中使用更少的内容。

我不知道它是否仍在印刷中,但我发现Navigating C++很有用,但我对 Pascal 的指针也很满意。错误当然我忘记了 15 年前你必须了解 OOP 是什么,现在它的假设更多了。因此,也许迈耶的做法并不过分。想法?

于 2008-08-21T05:47:07.000 回答
2

Wikipedia 上有一篇关于Java 和 C++ 之间比较的文章。

您不必担心 C++ 中的已检查异常,但您确实需要了解const 正确性

于 2008-08-21T06:11:43.650 回答
2

有两个主要区别:语法和内存管理。

在 C++ 中,您有指针,它更强大(或功能更弱,取决于您对权力的解释)对象引用,您已经从 Java 中了解了这些。

在 Java 中,您可以这样做:

Thing mything = new Thing(); // mything is an object reference
mything.method();

在 C++ 中,你会这样做:

Thing * mything = new Thing(); // mything is an object pointer
mything->method();
delete mything;

语法上的区别很明显:'->' 而不是 '.' 从指向对象的指针调用对象方法时。在 C++ 中,您必须在使用完对象后显式释放内存。归根结底,您在 C++ 和 Java 中做同样的事情,实例化对象和调用方法,在每一行的末尾放置无用的分号等等。难怪 Python 变得如此流行?:

mything = Thing() # mything is whatever I want it to be
mything.method()

浏览任何半体面的 C++ 文本将帮助您填写其余的细节。

于 2008-08-21T07:19:36.157 回答
2

我还彻底推荐 Bruce Eckel 的Thinking in C++。对于想要进入 C++ 思维方式的已经有经验的程序员来说,这是一本很棒的书。

他很乐意免费提供他的书籍的电子版本。

于 2008-08-21T09:26:29.767 回答
2

我强烈建议任何学习 C++ 的人阅读 Stroustrups “The C++ Programming Language”。Meyers 和 Eckel 有很棒的东西,但没有什么比向那个决定语言应该是什么以及他打算如何使用它的人学习更好的了。

于 2008-08-21T18:36:57.837 回答
2

我有完全相同的问题。我能找到的唯一一本书是Dean C. Wills 的“Pro Visual C++ 2005 for C# Developers”。这是一本很好的读物,有很好的例子,我认为这本书的角度可能是你正在寻找的。

于 2008-08-21T20:52:36.373 回答
1

对于内存处理,您将需要一种完全不同的感觉。还要考虑释放你不再需要的一切。在 Java 和 C# 中,您只需放开您的对象,内存就会为您整理好——您不能在 CPP 中这样做

于 2012-03-21T01:41:37.617 回答