2010-08-17 62 views
5

我是一個Java程序員,有一點C知識,想用C++入門,有人可以推薦一個很好的教程嗎?C++新手,幫我開始

也與任何幫助:

  • 項目與
  • 推薦閱讀
  • 什麼IDE學到了什麼?我目前使用NetBeans
  • 一般C++建議
+4

對於推薦的閱讀,請http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list 。 – 2010-08-17 15:40:42

+0

檢查NetBeans是否有C/C++插件(我非常確定它)。 – FrustratedWithFormsDesigner 2010-08-17 15:43:08

+8

坦率地說,如果你想學習正確的C++,假裝你從來沒有學過Java或C。是的,它們有着相似的語法,但是它們做的事情不同以至於試圖應用Java或C中的慣例導致C++的災難。 – 2010-08-17 15:44:35

回答

6

取決於您的目標平臺,我使用Visual Studio作爲IDE。

與Java相比,C++的一般規則是它包含比Java更自由的地獄,特別是關於模板與泛型,堆棧與堆以及執行(或缺少)面向對象和原則。例如,C++提供封裝破解的朋友聲明,const_cast,在堆棧上分配對象,指針可以指向它們,模板比泛型等具有無限多的能力等。

另一個主要的東西,你將必須得到以前是資源管理。 C++不提供GC。您需要熟悉RAII(資源獲取是初始化),以及基於範圍的構建和銷燬如何工作以避免資源泄漏。

您還需要刷新標準模板庫(STL)。 STL比Java庫有更直接的方法 - 例如,std :: iostream類提供本地方法來從文件中提取浮點數,字符串等,而在Java中,您需要File和Scanner,儘管它是範圍更加有限 - 沒有GUI或基於目錄的組件,僅供初學者使用。

哦,順便說一句,嚴肅地說,你的C知識。它會傷害而不是幫助你。

+2

朋友不一定會破壞封裝。 http://www.parashift.com/c++-faq-lite/friends.html#faq-14.2 – 2010-08-17 16:44:48

+0

這不是重點。關鍵是Java將它移除,因爲它可能破壞封裝。 C++沒有。 – Puppy 2010-08-17 16:48:44

+0

感謝那一整套有用的知識 – Gwilym 2010-08-17 16:51:31

1

的閱讀鏈接,在提供硅片是一個很好看。

我最大的和最常用的諮詢件將是熟悉的Boost庫和RAII熟悉(Resource Allocation is Initialization)和它生活!

我不是NetBeans的用戶,但如果你喜歡它,並且它是一個C++插件,那麼這可能是我建議你開始的。如果你不需要創建另一種環境,那麼你就無法在新語言的基礎上學習。話雖如此,我是一個Eclipse用戶,它的C++(CDT)插件相當不錯。

+0

謝謝我曾經使用過一個Eclipse,作爲一個團隊,我一直堅持使用同一個IDE的每個人,但沒問題,但我習慣了netbeans。但是如果我不知道我有什麼奇蹟可以消蝕^ _^ – Gwilym 2010-08-17 15:50:37

1

獲取大學教科書風格的C++書籍,如Deitel and Deitel。最難的部分是在設計可重用的庫時學習語言的所有細節,但如果您只是將現有的部分拼湊在一起,如果您已經瞭解Java,那就不會太糟糕。聲明爲普通變量的對象,其指針以及需要學習的引用以及資源管理之間存在細微差別。一旦你掌握了這門語言,用Stroustrup和Meyers這樣的經典作品填補空白。

根據IDE而言,您應該嘗試儘可能多地包括Visual Studio,X代碼,Anjuta和Eclipse,並且看看您最喜歡什麼。你也許應該學習使用Make(或者SCons)和vi構建IDE的方法。

對於這個項目,你應該先堅持CUI,因爲沒有像Java那樣的GUI的標準實現,但是最終你想實現像Tetris或矩陣數學庫這樣的東西,這很適合面向對象。 wxWidgets和Qt是跨平臺的,如果你想讓它跨平臺,但你應該瞄準任何你感興趣的平臺。

1

。這本書也不在鏈接中,我使用它:

C++中面向對象編程作者:Robert Lafore,它假定零背景,這很容易。

。對於IDE Visual studio是我喜歡的初學者中常用的:)。

。作爲一個很好的例子,您可以嘗試爲「複數」創建一個類,該類具有自己的添加,刪除,乘法和除法成員函數。您將瞭解類的內部數據和函數的封裝,並運算符重載

例如:

int i1 = 5 ; 
int i2 = 6 ; 
int i3 ; 
i3 = i1 + i2 ; //correct 

complex c1.setreal(3) ; //here you learn about member functions of the class 
complex c1.setimg(5) ; 
complex c2.setreal(6) ; 
complex c2.setimg(8) ; 
complex c3 ; 
c3 = c1 + c2 ;//wrong until you overload the operator + 
0

對IDE的幾點建議:

  • NetBeans (full version) - 工程與海灣合作委員會(不含稅)。在Windows上,gcc提供CygwinMingW。可以用來構建基於Qt的應用程序(請參見下面的Qt)。可用於Windows,Linux和Solaris(也許是其他)。
  • Qt Creator - 包括允許GUI應用程序可移植到多個平臺的Qt框架。可以與gcc或MSVC一起使用(僅限Windows)。適用於32位Windows(可以編譯爲64位Windows,但有些困難),32位或64位Linux和Mac OS X.
  • MS Visual C++ 2010 Express - 可用於構建32位或64位Windows應用程序的免費下載。可以用來構建標準的C++應用程序。它也允許構建Managed C++,但如果你打算這樣做,那麼你最好用C#去做。跨平臺的GUI可以用Qt框架構建。
  • Eclipse CDT - 我還沒有使用過這個,但是我聽到過很多關於它的好消息,而且至少不會提及它。我知道它將構建32位Windows應用程序(不確定64位),還有Linux版本(32位和64位bt)。
+3

什麼,沒有Vi/Emacs? :) – greyfade 2010-08-17 16:42:44

+0

安裝了C++插件,並與海灣合作委員會很高興看到hwo它從那裏去 – Gwilym 2010-08-17 16:53:54

+0

@greyfade:好的! – andand 2010-08-17 17:04:25

4

好教程?

沒有教程建議,因爲教程很可能不會觸及更復雜的語言功能。獲得一本書。

項目

的Qt 4的學習,一旦你熟悉的語言,使用STL /模板/ Qt的任何項目。提升源代碼可能值得借鑑。

推薦閱讀

任何Bjarne的Stroustrup的書對C++的。沉重的閱讀,但作爲參考很好,關於設計模式的書也可能會有所幫助。

什麼IDE?我目前使用NetBeans

windows上的Visual Studio Express,Linux上的jEdit/Kate/mcedit/vim/emacs。

一般C++建議

瞭解如何使用外部構建系統(cmake的/ scons的/ GNU做),如何在不IDE工作,如何從命令行工作,並儘量避免在不標準編譯器特有的功能。

0

推薦閱讀

有效C++斯科特邁爾斯。