search
尋找貓咪~QQ 地點 桃園市桃園區 Taoyuan , Taoyuan

C++學習攻略 怎樣學好C++語言

C++是最難的語言

這個世界上最難的編程語言可能非C++莫屬了。你千萬不要以為幾天就可以學好C++,C++的學習曲線是相當BT的,你可以看看這篇文章。C++是一門很自由的語言,自由到了有點BT和恐怖的地步。我甚至認為C++並不是一門成熟的編程語言,因為太容易犯錯了。所以,你一定要在一開始就要有很小心謹慎的態度,並把C++當成一種難以訓服的猛獸來看待。

多問「為什麼要這樣」的問題

學習C++一定要多問幾個「為什麼是這樣」,「憑什麼要這樣」的問題。比如:很多人知道C++有拷貝構造函數和初始化列表,但你真的知道為什麼要有拷貝構造函數?為什麼要有初始化列表嗎?為什麼要有template,為什麼要有RTTI,為什麼不是別的呢?難道就是為了讓一門語言變得Cool一些嗎?完全不是這樣的,C++中的任何一個feature都有些實實在在的原因,你一定要去了解為什麼要把C++設計成這樣的原因,你才能學好C++。有空看看《C++演化和設計》一書。

看書,大量的C++書

你可以按如下先後順序閱讀

《C++ Primer》,這本初級讀本可能讓會你啃得很痛苦,所有的語言的特性和為什麼都在裡面了,好好讀讀。當然由C++之父寫的《C++程序設計語言》也不錯。兩本看一本就好了(我看的是前者)。

了解C++的語法僅僅是萬里長征的第一步,你還需要看看《Effective C++》和《More Effective C++》這兩本書並不厚,但我從02年就一直看到現在,每次讀我都有新的體會,這兩本書太經典了。如果你對C語言不熟,這兩本書會讓你回去補C語言的課。

Think in C++同樣是另一本經典之極的書,學c++必讀,但是中文版的翻譯的很不好,所以還是去讀英文版的吧。

《C++沉思錄》同樣非常值得一讀,這裡教的不是編程,而是思考的方法,這是相當珍貴的。

《Exceptional C++》和《More Exceptional C++》讓你看看各種問題的解決方法和一些常見的經典錯誤。

《Advanced C++》和《Modern C++》可以讓你知道C++各種神奇的用法。

《泛型編程與STL》是把C++實踐到了極致的東西。很強大。STL——神一樣的模板庫(容器,演算法和函數對象),不得不服。

《深入探索C++對象模型》讓你了解編譯器下的C++是什麼樣的,讓你了解C++的性能並不差。這個對於C++的程序員太關鍵了。我以前寫過的《C++虛函數表解析》還有《C++對象內存布局》屬於這個範疇。

和Java語言做對比

我個人以為Java對C++這個並不成熟的語言做了很多調整,規範和限制。所以,對比一下Java和C++,想一想,為什麼一些東西在C++中可以做,但在Java中卻不行。比如:Java的異常是必需要catch的,不然就會編譯不通過。為什麼Java不提供操作符重載?為什麼Java會引入介面來做多重繼承?為什麼Java沒有像C++那樣的I/O字元流?為什麼Java不支持指針?為什麼Java可以做到垃圾回收?等等。Java體現著很多面向對象設計的東西,學習Java有助於你學會怎麼更好地使用C++來編程。

面向對象設計

雖然面向對象可能是個騙局。但是我覺得面向對象設計中的一些實踐非常的不錯,比如,單一原則,依賴倒置原則,等等,都非常地經典。《設計模式》必需一讀,《面向對象的分析和設計》可以一讀。但不可以設計模式為中心來編程,而應該是用設計模式來解藕。

類庫學習

看看MFC是怎麼封裝Windows API的,看看ACE是怎麼面向對象的,看看boost是怎麼玩面向對象的,看看CPPUnit又是怎麼設計的。當然,Java的JDK中有太多的設計模式,可以參考。



熱門推薦

本文由 yidianzixun 提供 原文連結

寵物協尋 相信 終究能找到回家的路
寫了7763篇文章,獲得2次喜歡
留言回覆
回覆
精彩推薦