在我的大學裏,我的大部分課程都是用Java編寫的。我最近還在暑期實習中學習了C#(和Visual Studio環境)。現在,我正在學習計算機圖形學的入門課程,並且教授課程的研究生喜歡使用C++通過GLUT訪問OpenGL綁定。從Java/C#到C++的最佳途徑是什麼?
有沒有人有任何好的資源,如何從Java/C#到C++的良好過渡?很明顯,指針會成爲一個大問題,但我應該尋找的其他任何東西?任何教程,指南等將非常有幫助!
謝謝!
在我的大學裏,我的大部分課程都是用Java編寫的。我最近還在暑期實習中學習了C#(和Visual Studio環境)。現在,我正在學習計算機圖形學的入門課程,並且教授課程的研究生喜歡使用C++通過GLUT訪問OpenGL綁定。從Java/C#到C++的最佳途徑是什麼?
有沒有人有任何好的資源,如何從Java/C#到C++的良好過渡?很明顯,指針會成爲一個大問題,但我應該尋找的其他任何東西?任何教程,指南等將非常有幫助!
謝謝!
是的,我受到了同樣的錯誤。大學傾向於依靠Java,然後允許您在項目中選擇想要使用的語言。
最好的方法就是跳進去。從小處開始,採取寶寶的步驟,只有當你到達那裏時Google會讓你感到困惑。還可以找到已經發布他們的源代碼的項目。看看他們如何構建他們的程序。基本上,只是修補概念。網絡上有大量的信息。
讓它很有趣,抓住C++ game development book,所以它不會太快變得麻木。
這裏的一些地方,我在學習
如果你已經知道Java/C#我建議直接使用C而不是C++。根據該網站,GLUT與C++具有相同的C綁定,因此您應該全部設置。無論如何,學習C語言的最好方法是購買並閱讀「C語言編程」的副本,並使用C編譯器坐下來運行。
Scott Meyers的Effective C++是一本很棒的書,可以幫助您學習C++。爲您提供該語言的概述,並介紹了許多您將在整個基本上任何C++程序的開發過程中使用的關鍵概念。
有效的C++斯科特邁爾斯是一個偉大的書,以幫助你學習C++中發現有用的。爲您提供該語言的概述,並介紹了許多您將在整個基本上任何C++程序的開發過程中使用的關鍵概念。
我喜歡這本書的所有3個版本,它是我作爲UT高級班的一本書,但它不是一本起始書。你可以在C++中使用更少的東西,儘管在閱讀Meyer的工作之前你肯定不會使用編譯器。
我不知道它是否仍在打印,但我發現導航C++有用,但我也很喜歡Pascal的指針。當然,我忘記了15年前你必須瞭解OOP是什麼,現在更多地假設它。所以也許邁爾不是不合格的。思考?
維基百科上有關於comparisons between Java and C++的文章。
您不必擔心C++中檢查的異常,但您確實需要了解const correctness。
有兩個主要區別:語法和內存管理。
在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++文本將幫助您填寫其餘細節。
我也徹底推薦布魯斯埃克爾的Thinking in C++。對於那些想要進入C++思維模式的經驗豐富的程序員來說,這本書是一本很棒的書。
他很善於製作他的書的電子版available for free。
我強烈建議任何學習C++的人閱讀Stroustrups「The C++ Programming Language」。邁耶斯和埃克爾有很棒的東西,但是沒有什麼能夠吸引那些決定語言應該是什麼樣的人以及他打算如何使用它的人。
我有完全相同的問題。我唯一能找到的書是"Pro Visual C++ 2005 for C# Developers" by Dean C. Wills。這是一個很好的例子,我認爲這本書來的角度可能是你要找的。
您將需要完全不同的內存處理感覺。同時考慮釋放你不需要的一切。在Java和C#中,你只是放開你的對象,內存會爲你整理 - 你無法在CPP中做到這一點