C++ primer 個人學習總結
歡迎大家來訪二笙的小房子,一同學習分享生活!
文章目錄
1. 個人見解:C++
先來說說對C++的感覺吧,由於個人不是特別熱愛學習的那種,自律性也比較差,加之上學期才剛接觸C++,於是在經過一個學期的cpp學習,對C++才屬於那種略有了解的程度,但即便如此也能感受到C++的強大,就這樣,在暑假的時候就決定走cpp方向,買了這本經典書籍開始了學習之旅。
2. primer學習總結
經過大概三個月的學習差不多將這本書看完,每一章節都有認真的看。對於我來說,在讀完一本經典書籍如果沒有自己的一點收穫都不好意思說自己閱讀過此書;慶幸,閱讀此書之後,終是有了自己的一點收穫,相比於在閱讀之前只能說對於C++的理解上了一層臺階,如果說現在對於C++是初步瞭解,那麼之前可能只能稱之為入門。下面就primer此書的幾個部分談一談個人見解:
2.1 第一章:開始
對於此章,大多在學習本書之前都基本瞭解,相當於給有點C++基礎的同學的回顧,當然也學到了一點新知識(以前課堂教學未了解到的),就 讀取數量不定的輸入資料,瞭解到了輸入放在迴圈中如何有效的讀取多個數據(現在看來非常的基礎
while (cin >> value)
,當輸入的值輸入錯誤、遇到檔案結束符或無效輸入時結束,get到這一新知識點,第一章也就差不多了。
2.2 Part1:C++基礎
對於這一部分,大多也是比較基礎的東西,除了這些之外還是有些比較細節的東西,在面試時也經常被問到,所以某些知識點還是需要仔細分析的
- 在這一部分初次出現的C++11新標準中新新增的右值引用
- 指標概念的複習與回顧
- const限定符的使用(其中頂層const與底層const的區別)
- constexpr以及常量表達式
- 還有以前未曾接觸到的auto與decltype型別指示符
- 以前稍有些瞭解但不深入的vector(後續章節有深入提及)
- 一些常用的運算子(++i與i++的區別)
- try語句塊與異常處理(後續章節有深入提及)
- 處理命令列選項的main:形如
int main(int argc, char **argv)
- 委託建構函式、聚合類與字面值常量類等,這些知識點在我看來以前不是很熟悉在閱讀完一遍之後瞭解了,再重新回顧的時候需要重點檢視的一些知識點(之後幾個部分的總結也類似)
2.3 Part2:C++標準庫
這一部分與下一部分在我看來是整本書的核心部分,特別特別的重要!!!對於其中的很多知識點都需要理解與掌握,其中泛型演算法部分對於資料結構與刷題會有很大的幫助(親測)
- IO類中的三個主要標頭檔案:iostream、fstream以及sstream,對於檔案與字串的處理尤有幫助
- 順序容器:vector、deque、list、forward_list、array以及string和關於這些順序容器的基本操作(其中“vector物件是如何增長的”這一節有助於理解vector的實現)
- string的查詢操作和與數值之間的轉換操作對於資料結構中處理字串有著奇效
- 泛型演算法、
lambda表示式
以及bind函式也許能讓你解題快人一步 - 關聯容器map與set以
RB-tree
為底層機制,之後衍生出來的hash_set與hash_map以hashtable
為底層機制,這些也是面試常問的 - 動態記憶體的管理以及智慧指標的應用,shared_ptr、unique_ptr與weak_ptr在類中的應用
- 動態陣列與allocator類
2.4 Part3:類設計者的工具
類是C++的核心工具,這一部分將從類的各個部分講解,看完並理解此部分能夠對類有更深的理解!同時此部分還包含了模板程式設計這一C++重要特性!應該重點掌握
- 拷貝建構函式、移動建構函式(右值引用)以及動態記憶體管理類
- 類中函式運算子,過載運算及型別轉換(注意避免過載的二義性)
- 面向物件程式設計(資料抽象,繼承和動態繫結)
- 其中虛擬函式是一個重中之重的點,一定要掌握
- 幾乎貫穿全書的
文字查詢程式
,瞭解與理解其實現是很有必要的 - 模板是泛型程式設計的基礎,從這句話就能知道這章有多重要了!!!
- 模板這章比較重要的知識點:類模板與函式模板,move的理解與轉發
2.5 Part4:高階主題
這一部分對於目前來說可能不會有太大的用處,但以後畢竟走cpp方向(對於想要走著方向的肯定早晚都得看的)所以先粗略學習了一遍。第十九章雖然可能不太常用,但面試時問到這方面的頻率很高!!
- tuple型別,當用於返回多個值(不同型別)時,適合使用tuple
- bitset型別,用於處理二進位制位
- 正則表示式,一種描述字元序列的方法,是一種極其強大的計算工具(目前感覺正則表示式主要應用於各種爬蟲,字串匹配)
- 隨機數,利用隨機數引擎物件和分佈物件組合的隨機數發生器生成隨機數(個人感覺比較好用)
- 利用一些操縱符改變流的狀態輸出特定格式的資料
- 異常處理的每個過程,try、throw和catch的步驟,noexcept異常說明符以及異常類的層次
- namespace名稱空間,這個在很多大型工程專案中很常見
- 多重繼承以及虛繼承,作為重點需要仔細理解
- new和delete的工作原理,過載的new和delete以及malloc、free的應用,定位new表示式,這些我覺得都超級超級重要!!
- dynamic_cast與typeid運算子,實現執行時型別識別
- 列舉型別,enum
- 類中資料成員指標以及函式指標,理解與普通指標的區別
- union(聯合類),匿名union應用比較廣泛
- 位域(傳遞二進位制資料)以及volatile限定符(對型別額外修飾)
- 連結指示:extern “C”(使用連結可以將C++程式碼與其他語言程式碼放在一起使用)
3. future
寫部落格不是目的,學會書中知識點、自己有收穫才是最重要的!!!學習漫長無涯,就此倍加努力!!!
正在學習的你,一起加油吧!