18禁网站免费,成年人黄色视频网站,熟妇高潮一区二区在线播放,国产精品高潮呻吟AV

學(xué)習(xí)啦 > 學(xué)習(xí)方法 > 通用學(xué)習(xí)方法 > 學(xué)習(xí)經(jīng)驗(yàn) > c++語(yǔ)言如何學(xué)習(xí)

c++語(yǔ)言如何學(xué)習(xí)

時(shí)間: 威敏1027 分享

c++語(yǔ)言如何學(xué)習(xí)

  本文來(lái)講講怎樣學(xué)好C++。學(xué)習(xí)啦小編把個(gè)人的一些學(xué)習(xí)經(jīng)驗(yàn)寫在這里,希望對(duì)大家有用。

  C++是最難的語(yǔ)言。

  這個(gè)世界上最難的編程語(yǔ)言可能非C++莫屬了。你千萬(wàn)不要以為幾天就可以學(xué)好C++,C++的學(xué)習(xí)曲線是相當(dāng)BT的,你可以看看這篇文章。C++是一門很自由的語(yǔ)言,自由到了有點(diǎn)BT和恐怖的地步。我甚至認(rèn)為C++并不是一門成熟的編程語(yǔ)言,因?yàn)樘菀追稿e(cuò)了。所以,你一定要在一開始就要有很小心謹(jǐn)慎的態(tài)度,并把C++當(dāng)成一種難以訓(xùn)服的猛獸來(lái)看待。

  多問(wèn)“為什么要這樣”的問(wèn)題。

  學(xué)習(xí)C++一定要多問(wèn)幾個(gè)“為什么是這樣”,“憑什么要這樣”的問(wèn)題。比如:很多人知道C++有拷貝構(gòu)造函數(shù)和初始化列表,但你真的知道為什么要有拷貝構(gòu)造函數(shù)?為什么要有初始化列表嗎?為什么要有template,為什么要有RTTI,為什么不是別的呢?難道就是為了讓一門語(yǔ)言變得Cool一些嗎?完全不是這樣的,C++中的任何一個(gè)feature都有些實(shí)實(shí)在在的原因,你一定要去了解為什么要把C++設(shè)計(jì)成這樣的原因,你才能學(xué)好C++。有空看看《C++演化和設(shè)計(jì)》一書。

  看書,大量的C++書。

  你可以按如下先后順序閱讀(下面這些書,我花了大約4-5年的時(shí)間,今天我還在隨時(shí)溫習(xí))

  《C++ Primer》,這本初級(jí)讀本可能讓會(huì)你啃得很痛苦,所有的語(yǔ)言的特性和為什么都在里面了,好好讀讀。當(dāng)然由C++之父寫的《C++程序設(shè)計(jì)語(yǔ)言》也不錯(cuò)。兩本看一本就好了(我看的是前者)。

  了解C++的語(yǔ)法僅僅是萬(wàn)里長(zhǎng)征的第一步,你還需要看看《Effective C++》和《More Effective C++》這兩本書并不厚,但我從02年就一直看到現(xiàn)在,每次讀我都有新的體會(huì),這兩本書太經(jīng)典了。如果你對(duì)C語(yǔ)言不熟,這兩本書會(huì)讓你回去補(bǔ)C語(yǔ)言的課。

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

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

  《Exceptional C++》和《More Exceptional C++》讓你看看各種問(wèn)題的解決方法和一些常見的經(jīng)典錯(cuò)誤。

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

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

  《深入探索C++對(duì)象模型》讓你了解編譯器下的C++是什么樣的,讓你了解C++的性能并不差。這個(gè)對(duì)于C++的程序員太關(guān)鍵了。我以前寫過(guò)的《C++虛函數(shù)表解析》還有《C++對(duì)象內(nèi)存布局》屬于這個(gè)范疇。

  和Java語(yǔ)言做對(duì)比。

  我個(gè)人以為Java對(duì)C++這個(gè)并不成熟的語(yǔ)言做了很多調(diào)整,規(guī)范和限制。所以,對(duì)比一下Java和C++,想一想,為什么一些東西在C++中可以做,但在Java中卻不行。比如:Java的異常是必需要catch的,不然就會(huì)編譯不通過(guò)。為什么Java不提供操作符重載?為什么Java會(huì)引入接口來(lái)做多重繼承?為什么Java沒(méi)有像C++那樣的I/O字符流?為什么Java不支持指針?為什么Java可以做到垃圾回收?等等。Java體現(xiàn)著很多面向?qū)ο笤O(shè)計(jì)的東西,學(xué)習(xí)Java有助于你學(xué)會(huì)怎么更好地使用C++來(lái)編程。

  面向?qū)ο笤O(shè)計(jì) 。

  雖然面向?qū)ο罂赡苁莻€(gè)騙局。但是我覺(jué)得面向?qū)ο笤O(shè)計(jì)中的一些實(shí)踐非常的不錯(cuò),比如,單一原則,依賴倒置原則,等等,都非常地經(jīng)典?!对O(shè)計(jì)模式》必需一讀,《面向?qū)ο蟮姆治龊驮O(shè)計(jì)》可以一讀。但不可以設(shè)計(jì)模式為中心來(lái)編程,而應(yīng)該是用設(shè)計(jì)模式來(lái)解藕。

  類庫(kù)學(xué)習(xí)。

  看看MFC是怎么封裝Windows API的,看看ACE是怎么面向?qū)ο蟮?,看看boost是怎么玩面向?qū)ο蟮?,看看CPPUnit又是怎么設(shè)計(jì)的。當(dāng)然,Java的JDK中有太多的設(shè)計(jì)模式,可以參考。

2662945