• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            chenglong7997

            如何學(xué)好C++語言(轉(zhuǎn))

            如何學(xué)好C++語言(轉(zhuǎn))

            原文地址:http://coolshell.cn/articles/4119.html

            因為之前收藏的地址找不到了,所以重新發(fā)一下

            昨天寫了一篇如何學(xué)好C語言,就有人回復(fù)問我如何學(xué)好C++,所以,我把我個人的一些學(xué)習(xí)經(jīng)驗寫在這里,希望對大家有用。首先,因為如何學(xué)好C語言中談到了算法和系統(tǒng),所以這里就只談C++語言。

            • C++是最難的語言。這個世界上最難的編程語言可能非C++莫屬了。你千萬不要以為幾天就可以學(xué)好C++,C++的學(xué)習(xí)曲線是相當(dāng)BT的,你可以看看這篇文章。C++是一門很自由的語言,自由到了有點BT和恐怖的地步。我甚至認(rèn)為C++并不是一門成熟的編程語言,因為太容易犯錯了。所以,你一定要在一開始就要有很小心謹(jǐn)慎的態(tài)度,并把C++當(dāng)成一種難以訓(xùn)服的猛獸來看待
            • 多問“為什么要這樣”的問題。學(xué)習(xí)C++一定要多問幾個“為什么是這樣”,“憑什么要這樣”的問題。比如:很多人知道C++有拷貝構(gòu)造函數(shù)和初始化列表,但你真的知道為什么要有拷貝構(gòu)造函數(shù)?為什么要有初始化列表嗎?為什么要有template,為什么要有RTTI,為什么不是別的呢?難道就是為了讓一門語言變得Cool一些嗎?完全不是這樣的,C++中的任何一個feature都有些實實在在的原因,你一定要去了解為什么要把C++設(shè)計成這樣的原因,你才能學(xué)好C++。有空看看《C++演化和設(shè)計》一書。

             

            • 看書,大量的C++書。你可以按如下先后順序閱讀(下面這些書,我花了大約4-5年的時間,今天我還在隨時溫習(xí))
              • C++ Primer》,這本初級讀本可能讓會你啃得很痛苦,所有的語言的特性和為什么都在里面了,好好讀讀。當(dāng)然由C++之父寫的《C++程序設(shè)計語言》也不錯。兩本看一本就好了(我看的是前者)。
              • 了解C++的語法僅僅是萬里長征的第一步,你還需要看看《Effective C++》和《More Effective C++》這兩本書并不厚,但我從02年就一直看到現(xiàn)在,每次讀我都有新的體會,這兩本書太經(jīng)典了。如果你對C語言不熟,這兩本書會讓你回去補(bǔ)C語言的課。
              • Think in C++同樣是另一本經(jīng)典之極的書,學(xué)c++必讀,但是中文版的翻譯的很不好,所以還是去讀英文版的吧。
              • C++沉思錄》同樣非常值得一讀,這里教的不是編程,而是思考的方法,這是相當(dāng)珍貴的。
              • Exceptional C++》和《More Exceptional C++》讓你看看各種問題的解決方法和一些常見的經(jīng)典錯誤。
              • Advanced C++》和《Modern C++》可以讓你知道C++各種神奇的用法。
              • 泛型編程與STL》是把C++實踐到了極致的東西。很強(qiáng)大。STL——神一樣的模板庫(容器,算法和函數(shù)對象),不得不服。
              • 深入探索C++對象模型》讓你了解編譯器下的C++是什么樣的,讓你了解C++的性能并不差。這個對于C++的程序員太關(guān)鍵了。我以前寫過的《C++虛函數(shù)表解析》還有《C++對象內(nèi)存布局》屬于這個范疇。
            • 和Java語言做對比。我個人以為Java對C++這個并不成熟的語言做了很多調(diào)整,規(guī)范和限制。所以,對比一下Java和C++,想一想,為什么一些東西在C++中可以做,但在Java中卻不行。比如:Java的異常是必需要catch的,不然就會編譯不通過。為什么Java不提供操作符重載?為什么Java會引入接口來做多重繼承?為什么Java沒有像C++那樣的I/O字符流?為什么Java不支持指針?為什么Java可以做到垃圾回收?等等。Java體現(xiàn)著很多面向?qū)ο笤O(shè)計的東西,學(xué)習(xí)Java有助于你學(xué)會怎么更好地使用C++來編程
            • 類庫學(xué)習(xí)。看看MFC是怎么封裝Windows API的,看看ACE是怎么面向?qū)ο蟮模纯碽oost是怎么玩面向?qū)ο蟮模纯碈PPUnit又是怎么設(shè)計的。當(dāng)然,Java的JDK中有太多的設(shè)計模式,可以參考。

            希望沒有嚇到大家,并歡迎大家補(bǔ)充。

            —————更新 2011/03/30 19:20————

            更新幾個觀點:

            • 1)我不擅長寫書評,所以推薦的這些書可能會讓你有點看點沒有感覺,你可以上豆瓣或是China-pub上看看書評。
            • 2)C++有很多奇淫技巧,有的很BT,包括虛函數(shù)表,也許會有人覺得有點沒意思,但我覺得很有意思,一方面可以了解一門語言的實現(xiàn)細(xì)節(jié),另一方面可以開闊思路。我從學(xué)習(xí)這些知識中受益很多。
            • 3)上述是我的個人的學(xué)習(xí)歷程,我覺得對我很有效,所以是經(jīng)驗之談。
            • 4)這類的文章在網(wǎng)上有很多很多,我不是第一個寫這樣的文章,我也不是寫得最好的,我并不希望用長篇大論來談?wù)撌裁础V皇窍虢o大家了解一下大概的學(xué)習(xí)樣子。畢竟,C++博大精深,任何一篇文章都無法說好。不如就簡單一些。

            posted on 2012-04-01 05:51 Snape 閱讀(218) 評論(0)  編輯 收藏 引用 所屬分類: C++ 轉(zhuǎn)載

            導(dǎo)航

            <2025年6月>
            25262728293031
            1234567
            891011121314
            15161718192021
            22232425262728
            293012345

            統(tǒng)計

            常用鏈接

            留言簿

            隨筆分類

            隨筆檔案

            文章分類

            文章檔案

            my

            搜索

            最新評論

            閱讀排行榜

            評論排行榜

            国产免费久久精品99久久| 久久久精品2019免费观看| 国内精品久久久久久野外| 热久久国产精品| 久久综合综合久久97色| 久久久久久久精品妇女99 | 亚洲一级Av无码毛片久久精品| 久久精品亚洲福利| 久久人人添人人爽添人人片牛牛| 久久久一本精品99久久精品66 | 久久本道综合久久伊人| 久久久久久国产精品无码下载 | 久久精品国产亚洲av瑜伽| 无码国内精品久久综合88| 久久国产亚洲精品无码| 久久国产一片免费观看| 色婷婷综合久久久久中文| 91精品国产高清久久久久久91| 精品久久久久久中文字幕大豆网| 亚洲综合精品香蕉久久网97| 久久青青草视频| 伊人久久大香线蕉av不卡| 中文国产成人精品久久亚洲精品AⅤ无码精品| 欧美久久久久久精选9999| 77777亚洲午夜久久多喷| 久久电影网| 国内精品久久久久久久影视麻豆 | 久久精品青青草原伊人| 国产精品久久久99| 亚洲国产精品人久久| 狠狠色婷婷综合天天久久丁香| 日日噜噜夜夜狠狠久久丁香五月| 久久精品国产只有精品66| 国产午夜电影久久| 久久精品国产第一区二区| 色偷偷888欧美精品久久久| 国产午夜精品久久久久免费视 | 久久久久国产视频电影| 99久久精品免费| 久久高潮一级毛片免费| 欧美精品丝袜久久久中文字幕|