六星云課堂:如何入門(mén)C++?C++比C語(yǔ)言難學(xué)嗎?

C++比C多了兩個(gè)加號(hào),C++比C語(yǔ)言難學(xué)嗎?如何入門(mén)C++?C++基礎(chǔ)入門(mén)學(xué)什么?后期開(kāi)發(fā)學(xué)什么?今天六星云課堂和大家聊聊!
C++語(yǔ)言誕生至今已有30多個(gè)年頭了,主要集中在需要運(yùn)行效率比較高的行業(yè),比如現(xiàn)在的游戲開(kāi)發(fā)以及高效服務(wù)器等等。

C++學(xué)習(xí)難度比其它語(yǔ)言都要高,這是不可否認(rèn)的,其學(xué)習(xí)難度主要在于它的復(fù)雜性,如何入門(mén)C++,想必很多人都頭疼過(guò)。講到入門(mén),我們首先是掌握基礎(chǔ)語(yǔ)法,C++的語(yǔ)法是和C語(yǔ)言的語(yǔ)法很相近。
? 要點(diǎn)一:掌握數(shù)據(jù)類(lèi)型表達(dá)式。
? 要點(diǎn)二:掌握數(shù)據(jù)類(lèi)型,運(yùn)算符和表達(dá)式以及控制語(yǔ)句的要點(diǎn)。
? 要點(diǎn)三:掌握函數(shù)的傳值類(lèi)型以及函數(shù)返回類(lèi)型。
? 要點(diǎn)四:學(xué)習(xí)函數(shù)的參數(shù)類(lèi)型和返回值類(lèi)型分別為三種,引用,對(duì)象和指針三種類(lèi)型。
C++是一門(mén)面向?qū)ο蟮恼Z(yǔ)言,其面向?qū)ο笳Z(yǔ)言特性:抽象,封裝,繼承,多態(tài)。這些特征總結(jié)對(duì)象的特性。掌握面向?qū)ο缶幊趟枷胗兄谖覀兏美斫夂途帉?xiě)編碼。
如何入門(mén)C++?C++基礎(chǔ)入門(mén)學(xué)什么?后期開(kāi)發(fā)學(xué)什么?
01 語(yǔ)言
在掌握基礎(chǔ)知識(shí)之后,進(jìn)階開(kāi)發(fā)我們不討具體技術(shù),只說(shuō)我們應(yīng)該學(xué)習(xí)什么東西。
我們要成為程序猿,要學(xué)習(xí)的很雜。學(xué)語(yǔ)言初期要選擇好一本書(shū),在此推薦一本《C++ Primer》,這本書(shū)很厚,內(nèi)容也很豐富,對(duì)知識(shí)的講解不僅僅停留在表面。如果這本書(shū)能有耐心看完,語(yǔ)言方面基本就沒(méi)有什么大問(wèn)題了,對(duì)以后的學(xué)習(xí)也打下了一個(gè)很好的基礎(chǔ)。
02 GUI
C++方面的GUI庫(kù)有很多種,比如MFC、WTL、wxWidgets、QT。這些GUI庫(kù)都各有自己的特點(diǎn),其實(shí)我們只要先了解一種就可以了,只要深入了解了一種GUI庫(kù),需要的時(shí)候再學(xué)習(xí)其他的就夠了,本質(zhì)上都差不多,很快就可以上手了。MFC雖然設(shè)計(jì)上有很多問(wèn)題,但是作為入門(mén)還是不錯(cuò)的,而且學(xué)習(xí)資料很多,碰到問(wèn)題也好解決。
03 數(shù)據(jù)結(jié)構(gòu)和算法
很多人都忽視了數(shù)據(jù)結(jié)構(gòu)和算法方面的知識(shí),尤其是一些編程語(yǔ)言的庫(kù)做得非常好,幾乎不需要自己去實(shí)現(xiàn)一些數(shù)據(jù)結(jié)構(gòu)和算法,導(dǎo)致現(xiàn)在很多程序員不重視甚至忽略這方面的知識(shí)。但是,當(dāng)我們想讓我們的程序跑的更快、內(nèi)存占用更少的時(shí)候,這些知識(shí)就非常非常重要了。很多程序員都是剛開(kāi)始的時(shí)候不重視這些,但是工作幾年后又來(lái)補(bǔ)習(xí)這些知識(shí)。
最開(kāi)始可能不需要學(xué)習(xí)的太深入,但是基本的數(shù)據(jù)結(jié)構(gòu)和算法一定要知道。推薦《數(shù)據(jù)結(jié)構(gòu)(C語(yǔ)言版)》,在數(shù)據(jù)結(jié)構(gòu)和算法的學(xué)習(xí)中,最好不要去關(guān)心面向?qū)ο蠓矫娴募记?,就用C語(yǔ)言來(lái)實(shí)現(xiàn),這樣能更關(guān)注于算法本身的內(nèi)容。
04 數(shù)據(jù)庫(kù)
學(xué)習(xí)數(shù)據(jù)庫(kù)的基礎(chǔ)知識(shí),并且掌握一種數(shù)據(jù)庫(kù)使用,推薦使用mysql,而且最好不要用一些封裝好的接口,而應(yīng)該直接用mysql提供的數(shù)據(jù)庫(kù)api,可能對(duì)數(shù)據(jù)庫(kù)了解的會(huì)更深入。
05 并行
cpu主頻已經(jīng)不能遵循摩爾定律了,現(xiàn)在cpu發(fā)展的趨勢(shì)是多核心。無(wú)論是多線程,還是多進(jìn)程,都是為了更好的利用cpu的性能,提供更好的用戶(hù)體驗(yàn)。這就要求我們?nèi)绻獙?xiě)出高效的應(yīng)用程序,必然要涉及到并行計(jì)算。多花些精力在并行計(jì)算上吧,一定會(huì)有豐富的回報(bào)。
06 網(wǎng)絡(luò)編程
這里所指的網(wǎng)絡(luò)編程是指socket編程。現(xiàn)在C++的應(yīng)用很多都是在做服務(wù)器開(kāi)發(fā),如何開(kāi)發(fā)一個(gè)高并發(fā)、大吞吐量、高穩(wěn)定性的服務(wù)器就是我們要考慮的了。
07 設(shè)計(jì)模式
設(shè)計(jì)模式不是具體的技術(shù),更多的是如何讓代碼更容易閱讀、更好擴(kuò)展、更容易使用。
08 庫(kù)的使用
C++標(biāo)準(zhǔn)庫(kù)僅僅提供了一些很基本的功能,所以我們經(jīng)常會(huì)引入一些第三方庫(kù)。最著名的恐怕就是被稱(chēng)為準(zhǔn)標(biāo)準(zhǔn)庫(kù)的boost庫(kù),它提供了我們編程中用到的各方面的技術(shù),文本處理、算法、網(wǎng)絡(luò)、多線程、圖像處理等等,幾乎無(wú)所不包。其它也有一些專(zhuān)著于某一方面的庫(kù),比如ACE是網(wǎng)絡(luò)通信方面的,TinyXML是解析xml的,OGRE是圖形渲染方面的。
09 操作系統(tǒng)的知識(shí)
程序員需要了解的操作系統(tǒng)知識(shí)和普通用戶(hù)是不一樣的,一個(gè)高手是需要深入了解操作系統(tǒng)的方方面面,而不是停留在使用層面。至于應(yīng)該了解哪些知識(shí),windows上的去看《windows核心編程》,linux的去看《深入理解linux內(nèi)核》,應(yīng)該可以知道自己應(yīng)該學(xué)什么了。
任何一門(mén)編程語(yǔ)言的學(xué)習(xí),離開(kāi)了項(xiàng)目實(shí)戰(zhàn),閱讀編程書(shū)籍學(xué)習(xí)效率將大打折扣。
這就是為什么很多的實(shí)習(xí)生可以不到兩個(gè)月,就可以寫(xiě)點(diǎn)小程序。因?yàn)樗业搅舜a的試驗(yàn)田。
小項(xiàng)目推薦
? 學(xué)生成績(jī)管理系統(tǒng)
? 經(jīng)典小游戲推箱子
? 街頭霸王97拳皇
? 騰訊QQ聊天群發(fā)器
? 雷霆戰(zhàn)機(jī)
? 智能貪吃蛇
? 金山打字通-拯救蘋(píng)果
? DNF游戲角色的移動(dòng)與場(chǎng)景切換
? 如何惡搞別人電腦
零基礎(chǔ)學(xué)C++建議
? 了解如今的市場(chǎng)行情,就是企業(yè)需要什么樣的人才,這點(diǎn)很重要。
? 有一套系統(tǒng)的學(xué)習(xí)方案,以及合理的學(xué)習(xí)路線。
? 有人指點(diǎn),很多問(wèn)題是我們自己不可能解決的,除非那個(gè)是天才,可能一個(gè)小問(wèn)題,我們一天都想不明白,但是別人的一句話(huà)可能就懂了,這個(gè)就是經(jīng)驗(yàn)。所以,學(xué)C++,有個(gè)人帶的話(huà)是最好的。
以上就是本次分享的全部?jī)?nèi)容,想學(xué)習(xí)更多C++技巧,歡迎持續(xù)關(guān)注六星云課堂!