C++,從入坑到放棄···
知乎上有人提問(wèn):如何在一個(gè)月內(nèi)提高C++水平:

雖然大家常常調(diào)侃C++是一門永遠(yuǎn)也精通不了的語(yǔ)言,但題主有Java基礎(chǔ),之前又初學(xué)過(guò)C++,一個(gè)月的時(shí)間強(qiáng)行突擊還是可以把C++常用的東西拿下,應(yīng)對(duì)面試問(wèn)題不大。至于那些炫技和裝逼用到的冷門技能,工作以后再慢慢學(xué)也不遲。
編譯器推薦使用Visual Studio,功能強(qiáng)大,后續(xù)有很多項(xiàng)的學(xué)習(xí)可以依靠VS進(jìn)行。
第一周:C基礎(chǔ)
Day1: HelloWorld,學(xué)習(xí)基礎(chǔ)數(shù)據(jù)類型int/short/long/char/float/double,類型轉(zhuǎn)換,學(xué)習(xí)輸入輸出,學(xué)習(xí)宏定義及其展開(kāi)Day2: 學(xué)習(xí)使用調(diào)試器,學(xué)習(xí)單步調(diào)試執(zhí)行程序,學(xué)習(xí)在調(diào)試器下觀察變量變化,學(xué)習(xí)在調(diào)試器下查看進(jìn)程的內(nèi)存數(shù)據(jù)。Day3: 學(xué)習(xí)數(shù)組,學(xué)習(xí)typedef用法Day4: 學(xué)習(xí)指針,理解什么是變量的地址,通過(guò)調(diào)試器觀察指針內(nèi)容,理解指針的內(nèi)涵。Day5: 學(xué)習(xí)函數(shù),函數(shù)傳參,默認(rèn)參數(shù),直接傳參和指針傳參;學(xué)習(xí)函數(shù)指針。Day6: 學(xué)習(xí)結(jié)構(gòu)體、聯(lián)合體、枚舉,通過(guò)調(diào)試器觀察它們?cè)趦?nèi)存層面到底是什么表現(xiàn)形式,學(xué)習(xí)sizeof用法Day7: 寫一個(gè)簡(jiǎn)單程序,把上面內(nèi)容都用上,在調(diào)試器下打開(kāi)匯編執(zhí)行頁(yè)面,把源代碼和匯編指令對(duì)照起來(lái),觀察并理解編譯型強(qiáng)類型語(yǔ)言執(zhí)行的本質(zhì),觀察函數(shù)調(diào)用和執(zhí)行過(guò)程中棧的變化,把變量、數(shù)組、結(jié)構(gòu)體、參數(shù)這些編程語(yǔ)言層面的東西理解透徹。
第二周:面向?qū)ο蠡A(chǔ)
Day8: 學(xué)習(xí)class編寫,理解封裝性,學(xué)習(xí)成員訪問(wèn)權(quán)限,學(xué)習(xí)構(gòu)造函數(shù)析構(gòu)函數(shù)、成員初始化方式。在調(diào)試器下,觀察構(gòu)造函數(shù)和析構(gòu)函數(shù)執(zhí)行時(shí)機(jī)。Day9: 學(xué)習(xí)繼承、函數(shù)重載、運(yùn)算符重載,學(xué)習(xí)命名空間Day10: 學(xué)習(xí)new/delete/delete [],學(xué)習(xí)string的使用,學(xué)習(xí)深拷貝與淺拷貝Day11: 學(xué)習(xí)多態(tài),虛函數(shù),并在調(diào)試器下觀察對(duì)象結(jié)構(gòu)、內(nèi)存對(duì)齊,虛函數(shù)表指針、虛函數(shù)表,理解虛函數(shù)原理。Day12: 學(xué)習(xí)friend、const、static、explicit關(guān)鍵字用法Day13: 學(xué)習(xí)四大類型轉(zhuǎn)換,學(xué)習(xí)異常處理Day14: 學(xué)習(xí)泛型編程基本操作
第三周:STL
Day15: 學(xué)習(xí)vector、list用法,學(xué)習(xí)迭代器使用Day16: 學(xué)習(xí)map/stack/queue用法Day17: 學(xué)習(xí)STL常用算法:find、find_if、count、sort、swap、replace···Day18: 學(xué)習(xí)仿函數(shù)Day19: 結(jié)合STL源碼,深入學(xué)習(xí)迭代器的各種姿勢(shì)Day20-21: 結(jié)合STL源碼,深入學(xué)習(xí)vector、list、map底層基本原理
第四周:C++11
Day22: 學(xué)習(xí)自動(dòng)類型推斷、auto、decltype關(guān)鍵字用法Day23: 學(xué)習(xí)智能指針,shared_ptr、weak_ptr,結(jié)合源碼學(xué)習(xí)智能指針底層原理Day24: 學(xué)習(xí)using關(guān)鍵字、for each循環(huán)、nullptrDay25: 學(xué)習(xí)臨時(shí)對(duì)象、右值引用、轉(zhuǎn)移構(gòu)造函數(shù)Day26: 學(xué)習(xí)使用線程庫(kù)進(jìn)行多線程編程、線程同步Day27: 學(xué)習(xí)lambda表達(dá)式、學(xué)習(xí)tupleDay28: 學(xué)習(xí)哈希表unordered_map和unordered_set使用
準(zhǔn)備面試
Day29: 題主說(shuō)算法和數(shù)據(jù)結(jié)構(gòu)還算熟悉,建議用C++刷一天LeetCode,找找寫代碼的感覺(jué)Day30: 背一背C++相關(guān)的八股文面試題,比如這個(gè):
你可以點(diǎn)擊文末左下角的閱讀原文一鍵直達(dá)哦~ https://www.zhihu.com/question/451327108/answer/2073547650
更詳細(xì)的C/C++后端學(xué)習(xí)路線圖,參考之前的這篇:
評(píng)論
圖片
表情

